我正在尝试为hive编写一个scala udf,它作用于json数组--扩展 org.apache.hadoop.hive.ql.exec.UDF
依靠play json play.api.libs.json.parse
.
当我试图从Hive中调用它时,我明白了 java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonToken.id()I
.
我不确定原因是什么——与Jackson版本有些不兼容,如果是的话,我该如何解决这个问题?
我唯一绑定的组件/版本是hive1.2。
2条答案
按热度按时间qxsslcnc1#
看看brickhouse(http://github.com/klout/brickhouse ). 砖厂有自定义项
to_json
以及from_json
,以及方便的功能json_map
以及json_split
直接处理Map和数组。关于您的版本控制问题,brickhouse使用jackson,使用版本1.8.8(以及其他版本),我没有遇到这个特定的版本控制问题。
emeijp432#
猜测这是Jackson的不合情理。
Hive1.2使用的是Jackson1.9.2,但是更新的版本被最近的PlayJSON版本(即最近几年)使用。
如果恢复到一个足够旧的playjson版本是没有意义的,那么最简单的解决方法可能是使用一个不依赖于jackson的scalajson解析库;rapture json可以与多个后端一起使用,因此可能是一个不错的选择。