【发布时间】:2018-02-24 17:39:17
【问题描述】:
根据AWS Forum Thread,有谁知道如何使用 AWS Glue 创建一个 AWS Athena 表,其分区包含不同的架构(在本例中是来自表架构的不同列子集)?
目前,当我对这些数据运行爬虫然后在 Athena 中进行查询时,我收到错误 'HIVE_PARTITION_SCHEMA_MISMATCH'
我的用例是:
- 分区代表天
- 文件代表事件
- 每个事件都是单个 s3 文件中的 json blob
- 事件包含列的子集(取决于事件类型)
- 整个表的“模式”是所有事件类型的完整列集(这由 Glue 爬虫正确组合在一起)
- 每个分区的“架构”是当天发生的事件类型的列子集(因此在 Glue 中,每个分区可能具有与表架构不同的列子集)
- 我认为这种不一致会导致 Athena 出现错误
如果我要手动编写一个模式,我可以很好地做到这一点,因为只有一个表模式,并且 JSON 文件中缺少的键将被视为 Null。
提前致谢!
【问题讨论】:
-
我有同样的问题,分区模式在列顺序上不同。它的数据相同,但他不够聪明,无法正确应用表模式。你解决问题了吗?
-
不,很遗憾,我没有解决这个问题。在列顺序方面,您可以尝试编写为换行符分隔的 JSON。这并不理想,但我认为如果你 gzip 文件,它不会对大小产生巨大的影响。祝你好运,如果你学到了什么,请告诉我!
-
定义多个爬虫(每个分区一个)不是解决方案吗?
标签: amazon-web-services amazon-s3 amazon-athena aws-glue