在5.2.1版本上使用aws emr作为数据处理环境,当处理一个具有许多嵌套字段的复杂模式的巨大json文件时,hive无法处理它,并且当它达到当前4000个字符的列长度限制时出错。
处理语句时出错:失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1。invalidobjectexception无效(message:invalid column 类型名称太长:[…]
看看文档,关于这个问题或类似的问题已经有很多了,尽管都没有解决[1,2]。在这种情况下,建议将metastore的几个字段更改为不同的值,以便为结构定义提供更大的长度。
COLUMNS_V2.TYPE_NAME TABLE_PARAMS.PARAM_VALUE
SERDE_PARAMS.PARAM_VALUE SD_PARAMS.PARAM_VALUE
如第一期所述,拟议的解决办法提到:
[…]设置值后,还必须配置并重新启动元存储。“
然而,除了db值之外,还没有规定还必须配置什么。
因此,在更新当前本地元存储(在本例中为mysql)的字段之后 string
至 mediumtext
而重新启动metastore进程,仍然无法获得任何进展,因为尝试加载json继续失败,并出现相同的错误。
是我遗漏了什么,还是有人找到了解决这个问题的替代方法?
1条答案
按热度按时间vktxenjb1#
查看与配置单元问题hive-15249相关的metastore源代码,除了metastore表中设置的参数约束之外,还有一个附加检查。
尤其是在
HiveMetaStoreUtils.java
文件中,以下声明似乎是执行错误的原因:因此,更改元存储中提到的值是不够的,因为代码约束将引发异常。