如何处理 glue 中的模式变化并在 csv 中获得预期的输出?

How handle schema changes in glue and get the expected output in csv?

我正在尝试使用 AWS Glue 抓取一些具有不同 sachems(数据兼容)的文件。
正如我在 AWS 文档中读到的那样,Glue 爬虫会针对架构中的任何更改更新目录表(添加新列并删除缺失的列)。 我在创建爬虫时检查了 "Update the table definition in the Data Catalog" 和 "Create a single schema for each S3 path"。
示例:
假设我有一个文件 "File1.csv",如下所示:

姓名、年龄、所在地

Ravi,12,Ind

乔,32 岁,美国

假设我有另一个文件 "File2.csv" 如下所示:

姓名、年龄、身高

杰克,12,160

简,32,180

架构中的爬虫 运行 更新为: name,age,loc,height - 这是预期的 但是当我尝试使用 Athena 读取文件或尝试使用 Glue ETL 作业将这两个文件的内容写入 csv 时,我观察到: 输出看起来像:

姓名、年龄、地点、身高

Ravi,12,Ind,

乔,32 岁,美国,

杰克,12,160,

简,32,180,

由于第二个文件没有 loc 列,因此 loc 的最后两行应为空白。

符合预期:

姓名、年龄、地点、身高

Ravi,12,Ind,

乔,32 岁,美国,

杰克,12,160

简,32,180

简而言之,glue 试图以连续的方式填充组合中的列 output.Is 有什么方法可以获得预期的输出?

我得到了 Parquet 文件的预期输出。最初,我使用的是 CSV,但 csv 反序列化器不理解如何在模式更改时将元素放入正确的位置。 将单个 csvs 更改为镶木地板,然后一个接一个地抓取它们帮助我整合了不断变化的模式。