gpt4 book ai didi

json - Hive Metastore 列宽限制

转载 作者:可可西里 更新时间:2023-11-01 14:23:17 26 4
gpt4 key购买 nike

使用 AWS EMR on the 5.2.1 version 作为数据处理环境,当处理一个巨大的 JSON 文件,这个文件具有复杂的 schema 和许多嵌套字段时,Hive 无法处理它并且错误如下它达到了 4000 个字符列长度的当前限制。

Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidObjectException(message:Invalid column type name is too long: [...]

查看文档,已经有很多关于这个问题或类似问题的问题,尽管都没有解决 [1 , 2 ].在此建议将 Metastore 的几个字段更改为不同的值,以便为结构定义留出更大的长度。

  • COLUMNS_V2.TYPE_NAME
  • TABLE_PARAMS.PARAM_VALUE
  • SERDE_PARAMS.PARAM_VALUE
  • SD_PARAMS.PARAM_VALUE

如第一期所述,建议的解决方案提到:

[...] after setting the values, the Metastore must also be configured and restarted."

然而,除了 DB 值之外,必须配置什么。

因此,将当前本地 Metastore(在本例中为 mysql)的字段从 string 更新为 mediumtext 并重新启动 Metastore 进程后,仍然无法取得任何进展,因为尝试加载 JSON 继续失败并出现相同的错误。

我是不是遗漏了什么,或者有人找到了解决这个问题的替代方法吗?

最佳答案

查看 MetaStore 源代码为 Hive issue HIVE-15249相关,除了在 MetaStore 表中设置的参数约束之外,还有一个额外的检查。

特别是,在HiveMetaStoreUtils.java 文件中,以下声明似乎是执行错误的原因:

public static final int MAX_MS_TYPENAME_LENGTH = 2000; // 4000/2, for an unlikely unicode case

因此,更改 MetaStore 中提到的值是不够的,因为代码约束会抛出异常。

关于json - Hive Metastore 列宽限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com