GET_JSON_OBJECT,impala在CDH 6.1.1版本中有bug,低版本的需要自己引用hive的jar包,并新建函数。

1.找到function所在的hive包,找到hive-exec-1.1.0-cdh5.14.2.jar

CDH6.1.1 impala加载hive的GET_JSON_OBJECT函数_hive

2.上传hive-exec-1.1.0-cdh5.14.2.jar到HDFS

hdfs dfs  -mkdir /udf  #新建hdfs的UDF路径
 
hdfs dfs -put hive-exec-1.1.0-cdh5.14.2.jar /udf #把jar包上传到hdfs的UDF文件夹
 
hdfs dfs -chmod -R 777  /udf  授权

3.新建impala函数


create function get_json_objectnew(String,String) returns String location "hdfs://nameservice1/udf/hive-exec-1.1.0-cdh5.14.2.jar" SYMBOL="org.apache.hadoop.hive.ql.udf.UDFJson";  #注意不要名字不要和原来的相同,以免覆盖掉原来的UDF函数
 
select get_json_objectnew('{"1":123,"name":"doris"}','$.1');  #测试新的UDF是否可以使用

CDH6.1.1 impala加载hive的GET_JSON_OBJECT函数_hdfs_02

4.原来自带的函数报错

CDH6.1.1 impala加载hive的GET_JSON_OBJECT函数_hdfs_03