由于配置单元版本不同,Parquet模式不兼容

时间:2018-08-13 04:22:43

标签: hive amazon-redshift parquet aws-glue amazon-redshift-spectrum

我们有一个运行Hive 0.13.1的emr服务器(我知道它很老旧,但是这个集群有很多依赖关系,因此我们无法取消它) 无论如何,我们使用不同的emr集群(具有最新版本的hive)在镶木地板中处理了大约10 TB的TSV数据。 这是简化休数据处理的临时操作。

现在,我们回到旧的emr进行对镶木地板的TSV增量处理。 我们将aws红移频谱与胶水结合使用来查询此数据。 Glue搜寻数据所在的s3路径,从而为我们提供了可使用的架构。

现在,旧的emr处理过的数据给我们带来了与Parquet模式不兼容有关的问题。

当我们尝试读取包含由新配置单元和旧配置单元处理的数据的镶木地板数据时,得到的错误是,

[2018-08-13 09:40:36] error: S3 Query Exception (Fetch) [2018-08-13 09:40:36] code: 15001 [2018-08-13 09:40:36] context: Task failed due to an internal error. File '<Some s3 path >/parquet/<Some table name>/caldate=2018080900/8e71ebbe-b398-483c-bda0-81db6f848d42-000000 has an incompatible Parquet schema for column [2018-08-13 09:40:36] query: 11500732 [2018-08-13 09:40:36] location: dory_util.cpp:724 [2018-08-13 09:40:36] process: query1_703_11500732 [pid=5384]

我的直觉是因为配置单元版本不同,或者可能是红移谱错误。

有人遇到过同样的问题吗?

1 个答案:

答案 0 :(得分:0)

我认为这篇特别的文章将帮助您解决此问题。它讨论了模式由不同版本编写并由另一个版本读取的问题。

https://slack.engineering/data-wrangling-at-slack-f2e0ff633b69