Glue写入S3的XML格式DynamicFrame时如何指定自定义rootTag和rowTag
解决方案
AWS Glue 写入XML格式文件时,自定义根标签、行标签的配置不属于S3连接参数,需要单独通过format_options字段传入,你原有代码未指定该部分配置,因此会使用框架默认的root作为根标签、record作为行标签。
直接修改写入代码,补充格式配置即可满足需求:
repartitioned_df = df.repartition(1) datasink4 = glueContext.write_dynamic_frame.from_options( frame = repartitioned_df, connection_type = "s3", connection_options = {"path": "s3://datalaketest1/temp"}, format = "xml", format_options = { "rootTag": "SET", "rowTag": "TRECORD" }, transformation_ctx = "datasink4" )
补充说明
- 标签值严格区分大小写,请确保传入的
SET、TRECORD拼写和大小写与预期完全一致 - Glue 2.0及以上版本内置的XML处理组件原生支持该配置,若使用低于2.0的Glue版本,请先确认作业依赖的XML插件包版本兼容这两个参数
- 如果你选择先将DynamicFrame转换为Spark DataFrame再执行写入,可通过DataFrame写入的option方法传参,参考写法如下:
spark_df = repartitioned_df.toDF() spark_df.write \ .format("xml") \ .option("rootTag", "SET") \ .option("rowTag", "TRECORD") \ .save("s3://datalaketest1/temp")
内容的提问来源于stack exchange,提问作者Ashish Lekhi
相关产品推荐
相关产品推荐

