【问题标题】:Athena puts data in incorrect columns when input data format changes输入数据格式更改时,Athena 将数据放入不正确的列中
【发布时间】:2019-10-26 22:03:15
【问题描述】:

我们有一些以管道分隔的 .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

这是胶水爬虫中的某种错误,还是有办法对其进行配置,以便将正确的数据放在正确的列中(而不是运行数据清理脚本来转换输入文件)?

【问题讨论】:

    标签: amazon-web-services amazon-athena aws-glue


    【解决方案1】:

    我认为这是 Glue 过度承诺和交付不足的又一个案例。只要数据格式是分隔文本,如果在中间添加列,Glue 就会出错。在末尾添加或删除(但不是同时)列有效,但不能在中间。 Athena 不支持为不同的分区使用不同的列,因此 Glue 无法完成这项工作 - 但它看起来可以。

    您要么必须重写数据,更改为最后添加列,要么切换到其他数据格式,其中文件包含足够的元数据,这不会成为问题:JSON、Avro 或 Parquet。

    我建议你完全停止使用 Glue 爬虫,它看起来像是一个通用工具,但真正解决的用例很少。请参阅 https://stackoverflow.com/a/56439429/1109 以获取有关如何操作的一些建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多