首页 文章

如何在胶水中处理模式更改并获得csv中的预期输出?

提问于
浏览
0

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

姓名,年龄,LOC

拉维,12日,工业

乔,32,美国

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

姓名,年龄,身高

杰克,12,160

简,32180

在架构中运行的爬虫更新为:名称,年龄,位置,高度 - 这是已经过期但当我尝试使用Athena读取文件或尝试使用Glue ETL作业将两个文件的内容写入csv时,我有观察到:输出看起来像:

姓名,年龄,禄,高度

拉维,12日,工业,,

乔,32,美国,,

杰克,12,160 ,,

简,32180 ,,

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

在预期的地方:

姓名,年龄,禄,高度

拉维,12日,工业,,

乔,32,美国,,

插孔,12日,160

简,32,180

总之,胶水试图在组合输出中以连续的方式填充色谱柱 . 有什么方法可以得到预期的输出?

1 回答

  • 0

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

相关问题