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

马克沃森

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

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

我浏览了AWS文档和aws-glue-libs源,但没有发现任何问题。理想情况下,将有某种方法可以从awsglue.job包中获取元数据(我们使用的是python风格)。

我仍在学习Glue,因此如果我使用了错误的术语,我们深表歉意。我也用spark标签对其进行了标记,因为我相信这就是Glue在幕后使用的东西。

尤里·邦达鲁克(Yuriy Bondaruk)

您可以在您的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))

请记住,它仅适用于getCatalogSource()API,不适用于create_dynamic_frame_from_options()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS Glue,输出一个带有分区的文件

添加带有文件名通配符的列

AWS Glue 中的 AWS 区域

如何在AWS Glue中运行查询

在AWS Glue中添加负载

我们如何在 AWS Glue 中的 PYSPARK 或 Dynamic Frames 中重命名生成/输出的镶木地板文件?

AWS Glue-如何在Glue目录中查询LOCATION?

如何在AWS Glue上将消息写入输出日志?

查找文件中是否存在行,并使用awk添加带有文件名的列?

AWS Glue小写列

问题添加带有 Unicode 文件名的文档

AWS S3:如何在 COPY 命令中在 S3 目录中插入动态文件名

使用 AWS Glue 在目标表中添加布尔列

添加带有数据来源的文件名的列

AWS Redshift Spectrum-如何在外部表中获取s3文件名

如何在AWS Glue PySpark中运行并行线程?

如何在AWS Glue中设置多个--conf表参数?

如何在S3上设置AWS Firehose的目标文件名?

防止在 AWS Glue 中多次处理文件

如何在AWS Glue目录中列出所有数据库和表?

阵列中的AWS Glue动态框架列

如何使用AWS CLI(Dos)将文件名中带有空格的文件从一个存储桶复制到另一个存储桶

如何在pyspark aws emr中向现有数据框添加多个列?

带有AWS WAF的AWS API Gateway

仅合并 csv 文件的一部分并添加带有 csv 文件名的列

如何在 nginx 中为某些文件扩展名添加带有代理传递的缓存控制标头

如何提高AWS Glue的性能?

通过带有Terraform的EC2创建时如何在AWS EBS中添加标签?

如何在Javascript中添加带有输出的用户输入