一、问题的出现
今天用Dbeaver连接hive,测试一下昨天在hive客户端执行过的几条sql,sql里面有自定义的UDF、UDTF、UDAF等,但是当在Dbeaver里面按下执行按钮后,报错了,说是无效的函数。可是明明在Hive里面注册成永久函数了,也运行过了,怎么在Dbeaver中就无效了呢?
二.解决
1.将在hive命令行执行的创建永久函数语句放到Dbeaver中执行一遍
(1)创建永久函数语句如下:
create function testudf as 'test.CustomUDF' using jar 'hdfs://cls:8020/user/hive/warehouse/testudf/TESTUDF.jar';
三.原因(未仔细验证)
1.因为我hive客户端是用hive命令连接并注册函数的,又因为Dbeaver连接hive走的是hiveserver2服务,也就是beeline连接。据说hive 客户端注册 hiveserver2不能用。 2.实际操作过程中,当我在Dbeaver中执行注册永久函数的指令,执行结果报函数已存在,当我再次执行sql语句就好了。所以我想这有可能是函数信息被刷新了,因为刚开始执行一直报函数无效,说明sql也是被执行了的。
|