微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Glue-如何在 S3 中将动态帧编写为 .txt 文件并使用“|”作为分隔符

如何解决AWS Glue-如何在 S3 中将动态帧编写为 .txt 文件并使用“|”作为分隔符

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

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

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

解决方法

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

,

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

df=frame.toDf()
df.write.option("sep","|").option("header","true").csv(filename)
,

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

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

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 之前。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。