0

我想将动态框架作为文本文件写入 S3 并使用“|” 作为分隔符。

如何修改下面的代码,以便 Glue 将框架保存为 .txt 文件并使用“|” 作为分隔符。

glue_context.write_dynamic_frame.from_options(
        frame = frame,
        connection_type = "s3",    
        connection_options = {"path": outpath},
        format = "csv")
4

4 回答 4

2

您可以将 DynamicFrame 转换为 spark 数据帧,并使用 spark 写入选项 sep 将其与分隔符一起保存。

df=frame.toDf()
df.write.option("sep","|").option("header","true").csv(filename)
于 2021-04-11T09:24:50.847 回答
1

目前在 Glue 中,您可以将 spark 数据帧转换为 pandas 数据帧,只需:

pandasDF = sparkDF.toPandas()

您可以享受 Pandas 的所有现代舒适设施。

于 2021-08-31T16:53:40.113 回答
0

Glue 目前支持.txt作为输出。在这里,您可以阅读支持的文件类型。

于 2021-04-08T12:27:06.890 回答
0

我不确定您为什么要使用.txt扩展名写入数据,但是然后在您的文件中指定format="csv". 如果您的意思是通用文本文件,那么 csv 就是您想要使用的。

Glue DynamicFrameWriter 支持自定义格式选项,这是您需要添加到代码中的内容(另请参阅此处的文档):

glue_context.write_dynamic_frame.from_options(
    frame=frame,
    connection_type='s3',
    connection_options={
        'path': outpath,
    },
    format='csv',
    format_options={
        'separator': "|"
        # ...other kwargs
    }
)

请注意,DynamicFrameWriter 不允许为您的文件指定名称,并且还会根据执行期间创建的分区数量创建多个输出。

如果你只想要一个输出文件,你必须这样做:

df = df.repartition(1)

在写入 s3 之前。

于 2021-05-14T13:11:33.903 回答