write_dynamic_frame.from_options 生成多个零件文件

Posted

技术标签:

【中文标题】write_dynamic_frame.from_options 生成多个零件文件【英文标题】:write_dynamic_frame.from_options generates multiple part fles 【发布时间】:2021-11-19 21:25:21 【问题描述】:

我是 AWS 胶水世界的新手。我正在尝试将 avro 文件写入 S3。数据被写入 S3 文件夹,但这不是我想要的,而是像这样写入多个部分文件:

run-1637354712957-part-r-00000
run-1637354712957-part-r-00001
run-1637354712957-part-r-00002
run-1637354712957-part-r-00003
run-1637354712957-part-r-00004
run-1637354712957-part-r-00005
run-1637354712957-part-r-00006
run-1637354712957-part-r-00007
run-1637354712957-part-r-00008

代码如下:

def write_to_s3(data_frame, s3_path, file_name, glue_context):
    connection_options = 'path': f's3://s3_path'

    glue_context.write_dynamic_frame.from_options(
        frame=DynamicFrame.fromDF(data_frame, glue_context, file_name),
        connection_type='s3',
        connection_options=connection_options,
        format='avro'
    )

传递给write_to_s3方法的数据框是

我错过了什么?

【问题讨论】:

【参考方案1】:

那是因为 Spark 使用多个 worker 运行代码。如果你想生成一个简单的文件,你必须使用coalesce函数或者定义数据块来定义worker的数量。

【讨论】:

以上是关于write_dynamic_frame.from_options 生成多个零件文件的主要内容,如果未能解决你的问题,请参考以下文章

简易先进先出队列-自用

函数参数

多重背包

合租房合同模板

启动代码分析 02

ACM数论 求幂乘