我们有一些管道分隔的 .txt 报告进入 S3 中的一个文件夹,我们在其中运行 Glue 爬网程序来确定 Athena 中的架构和查询。
报告的格式最近发生了变化,因此中间有两个新列。
旧文件:
Columns A B C D E F
Data a1 b1 c1 d1 e1 f1
带有额外“G”和“H”列的新文件:
Columns A B G H C D E F
Data a2 b2 g2 h2 c2 d2 e2 f2
我们在 Athena 中看到的爬虫创建的表中得到了什么:
Columns A B C D E F G H <- Puts new columns at the end. OK
Data a1 b1 c1 d1 e1 f1 <- Correct for old data
Data a2 b2 g2 h2 e2 f2 <- 4 columns incorrect and 2 missing
这是胶水爬虫中的某种错误,还是有办法配置它,以便将正确的数据放入正确的列中(除了运行数据清理脚本来转换输入文件)?
我认为这是 Glue 承诺过多而交付不足的又一个案例。只要数据格式是分隔文本,如果您在中间添加列,Glue 就会做错误的事情。在末尾添加或删除(但不能同时删除)列是可行的,但在中间则不行。 Athena 不支持不同分区的不同列,因此 Glue 无法实现此功能 - 但它看起来可以。
您要么必须重写数据,要么更改为最后添加列,要么切换到不同的数据格式,其中文件包含足够的元数据,这不会成为问题:JSON、Avro 或 Parquet。
我建议你完全停止使用 Glue 爬虫,它看起来像是一个通用工具,但真正解决的用例很少。看https://stackoverflow.com/a/56439429/1109 https://stackoverflow.com/a/56439429/1109获取一些关于该怎么做的建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)