【发布时间】:2017-02-01 17:42:48
【问题描述】:
使用AWS EMR on 5.2.1版本作为数据处理环境,当处理一个庞大的JSON文件时,该文件具有复杂的架构和许多嵌套字段,Hive无法处理它并且错误为它达到了 4000 个字符列长度的当前限制。
处理语句时出错:FAILED:执行错误,返回码 1 来自 org.apache.hadoop.hive.ql.exec.DDLTask。 InvalidObjectException(message:Invalid column type name is too long: [...]
查看文档,已经有很多关于这个问题或类似问题的问题,尽管都未解决 [1,2]。在此建议将 Metastore 的几个字段更改为不同的值,以便为结构定义提供更大的长度。
COLUMNS_V2.TYPE_NAMETABLE_PARAMS.PARAM_VALUESERDE_PARAMS.PARAM_VALUESD_PARAMS.PARAM_VALUE
如第一期所述,建议的解决方案提到:
[...] 设置值后,Metastore 还必须配置并重新启动。"
然而,除了 DB 值之外,还没有指定必须还配置什么。
因此,在将当前本地 Metastore(本例中为 mysql)的字段从 string 更新为 mediumtext 并重新启动 Metastore 进程后,仍然无法获得任何进展,因为尝试加载 JSON 继续失败,同样错误。
我是否遗漏了什么或有人找到了解决此问题的替代解决方法?
【问题讨论】:
-
你找到解决办法了吗?有完全相同的问题
-
@GauravShah,仍然没有运气,已经在本地使用 Hadoop 和 Hive(本地 mysql Metastore)进行了尝试。我将尝试使用 embedded Derby 数据库。
-
你看问题了吗,好像很相关
-
您可以返回到 hive 1.x,并更新列类型。为我工作
标签: json hadoop hive emr metastore