在 5.2.1 版本上使用AWS EMR作为数据处理环境,当处理具有复杂架构和许多嵌套字段的巨大 JSON 文件时,Hive 无法处理它并出现错误,因为它达到了当前 4000 个字符的列长度限制.
处理语句时出错:FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。InvalidObjectException(消息:无效的列类型名称太长:[...]
查看文档,已经有很多关于这个问题或类似问题的问题,尽管都没有解决[1 , 2 ]。在此建议将 Metastore 的几个字段更改为不同的值,以便为结构定义提供更大的长度。
COLUMNS_V2.TYPE_NAME
TABLE_PARAMS.PARAM_VALUE
SERDE_PARAMS.PARAM_VALUE
SD_PARAMS.PARAM_VALUE
如第一期所述,建议的解决方案提到:
[...] 设置值后,还必须配置并重新启动Metastore 。”
然而,除了 DB 值之外,还没有指定必须配置的内容。
因此,在更新当前本地 Metastore(在本例中为 mysql)的字段string
并mediumtext
重新启动 Metastore 进程后,仍然无法获得任何进展,因为尝试加载 JSON 继续失败并出现同样的错误。
我是否遗漏了某些东西,或者是否有人找到了解决此问题的替代解决方法?