如何避免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')
答案 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