定义的spark永久自定义项,可以在metastore中看到,但不能在spark上的配置单元sql中使用

jjhzyzn0  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(212)
CREATE FUNCTION hello AS 'com.dtstack.main.udf.HelloUDF' USING JAR 'hdfs:///172.16.1.151:9000/user/spark/sparkUDF.jar'

使用

select hello(xcval) from xctable

错误:org.apache.spark.sql.analysisexception:未定义函数:“hello”。此函数既不是已注册的临时函数,也不是在数据库“default”中注册的永久函数。;1号线位置7
有人能帮我吗?

zpf6vheq

zpf6vheq1#

要在hive中创建永久函数,需要将jar放在hive.auxiliary.path上。
hive.auxiliary.path是配置单元读取udf的默认位置,如果您的jar文件在该位置不可用,您将无法访问它。
因为当您创建一个函数时,hive知道jar的位置为“hdfs:///172.16.1.151:9000/user/spark/sparkudf.jar”,但是要使它对spark可用,您必须将它部署在辅助路径上,因为一旦您的hive会话关闭,配置单元只存储函数的定义,而不存储位置,对于位置,它将转到辅助路径。
有关udf部署的更多信息,请参阅https://www.cloudera.com/documentation/enterprise/5-4-x/topics/cm_mc_hive_udf.html

相关问题