如何解决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 举报,一经查实,本站将立刻删除。