首页 文章

AWS Glue:如何在输出中添加包含源文件名的列?

提问于
浏览
3

有没有人知道在Glue作业中添加源文件名作为列的方法?

我们创建了一个流程,我们在S3中抓取了一些文件以创建架构 . 然后,我们编写了一个将文件转换为新格式的作业,并将这些文件作为CSV写回另一个S3存储桶,供我们的其余管道使用 . 我们想要做的是访问某种作业元属性,以便我们可以在包含原始文件名的输出文件中添加一个新列 .

我查看了AWS文档和aws-glue-libs源代码,但没有看到任何跳出来的内容 . 理想情况下,有一些方法可以从 awsglue.job 包中获取元数据(我们使用的是python风格) .

我还在学习Glue,如果我使用错误的术语,请道歉 . 我也用火花标签标记了这一点,因为我相信Glue正在使用它 .

1 回答

  • 2

    你可以在你的etl工作中用spark做到这一点:

    var df = glueContext.getCatalogSource(
      database = database,
      tableName = table,
      transformationContext = s"source-$database.$table"
    ).getDynamicFrame()
     .toDF()
     .withColumn("input_file_name", input_file_name())
    
    glueContext.getSinkWithFormat(
      connectionType = "s3",
      options = JsonOptions(Map(
        "path" -> args("DST_S3_PATH")
      )),
      transformationContext = "",
      format = "parquet"
    ).writeDynamicFrame(DynamicFrame(df, glueContext))
    

相关问题