如何在glue中处理模式更改并在csv中获得预期输出



我正在尝试使用AWS Glue抓取一些具有不同sachem(数据兼容(的文件
正如我在AWS文档中所读到的,Glue爬网程序会针对架构中的任何更改更新目录表(添加新列并删除缺失列(。在创建爬网程序时,我检查了"更新数据目录中的表定义"one_answers"为每个S3路径创建一个单一模式">
示例:
假设我有一个文件"File1.csv",如下所示:

姓名、年龄、所在地

拉维,12岁,Ind

Joe,32岁,美国

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

姓名、年龄、身高

Jack,12160

Jane,32180

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

姓名、年龄、地点、身高

拉维,12岁,印第安纳州,

Joe,32岁,美国,

Jack,12160,

Jane,32180,

最后两行的loc应该为空,因为第二个文件并没有loc列。

如预期:

姓名、年龄、地点、身高

拉维,12岁,印第安纳州,

Joe,32岁,美国,

Jack,12,160

Jane,32,180

简而言之,glue试图在组合输出中以连续的方式填充列。有什么办法可以得到预期的输出吗?

我得到了Parquet文件的预期输出。最初,我使用CSV,但CSV反序列化程序不知道如何在模式更改时将元素放在正确的位置。将单个csv更改为镶木地板,然后一个接一个地爬行,这帮助我融入了不断变化的模式。

最新更新