Glue DynamicFrame添加文件名列报错:列已存在问题求助
问题解决方法
你的错误根源是**attachFilename参数的位置放错了**——它不属于format_options,而是要放在connection_options配置里。
当你把attachFilename放在format_options中时,Glue内部会默认生成一个文件名相关列,同时你指定的列名又会被重复添加,导致冲突报错,哪怕修改列名也会因内部默认逻辑触发重复问题。
修正后的代码如下:
def read_data(self) -> DynamicFrame: dyf = self.glue_context.create_dynamic_frame.from_options( connection_type="s3", connection_options={ "paths": [f"s3://{self.args['SOURCE_S3_BUCKET']}/{self.args['SOURCE_S3_KEY']}"], "recurse": True, "attachFilename": "source_file_name" # 移至connection_options内 }, format="json", format_options={ "jsonPath": "$", "multiline": True }, transformation_ctx=f"extract_data" ) print("dyf") print(dyf.show(2)) return dyf
额外注意事项:
- 确保
attachFilename指定的列名,在源JSON文件的字段中不存在,否则仍会触发重复列报错。 - 启用
multiline=True时,要保证每个S3文件内是单个完整的JSON对象,避免解析异常。
内容的提问来源于stack exchange,提问作者Suraj Pandey
相关产品推荐
相关产品推荐

