AWS Glue-防止将空导出到S3

时间:2018-09-07 08:05:41

标签: python amazon-web-services aws-glue

如何避免AWS Glue将空对象写入S3?

我有一个粘合作业,它将生成的动态帧写入S3:

dynamic_frame = # result of Glue job processing

glue_context.write_dynamic_frame.from_options(
    frame = dynamic_frame,
    connection_type = 's3',
    connection_options = {'path': 's3://some-bucket/some-path'},
    format = 'json')

但是,当我在S3中检查存储桶内容时,不仅看到数据,还看到了许多大小为0 B的对象。如何防止这种情况发生?

我尝试使用DropNullFields类(请参见下文),但这没有帮助。

dynamic_frame = # result of Glue job processing

non_null_fields = DropNullFields.apply(dynamic_frame)

glue_context.write_dynamic_frame.from_options(
    frame = non_null_fields,
    connection_type = 's3',
    connection_options = {'path': 's3://some-bucket/some-path'},
    format = 'json')

1 个答案:

答案 0 :(得分:0)

Aws Glue是Apache Spark的包装。通常,Spark写入与分区一样多的文件。如果正在写入空文件,则意味着您具有空分区。 这样做的方法是将dynamic_frame重新分区到较小的分区中。对于Spark DataFrames,您将使用“ coalesce”功能。

在Glue中,您可以尝试使用重新分区功能:https://docs.aws.amazon.com/glue/latest/dg/glue-etl-scala-apis-glue-dynamicframe-class.html#glue-etl-scala-apis-glue-dynamicframe-class-defs-repartition