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:未定义的函数: '你好&#39 ;.此功能既不是注册的临时功能也不是 在数据库中注册的永久功能'默认'。第1行 7
任何人都可以帮助我吗?
答案 0 :(得分:1)
要在hive中创建永久函数,您需要将jar放在hive.auxiliary.path上。
hive.auxiliary.path是hive读取udf的默认位置,如果您的jar文件在您无法访问它的位置上不可用。
因为当你创建一个函数时,hive知道jar的位置为“hdfs:///172.16.1.151:9000 / user / spark / sparkUDF.jar”但是为了使它可用于spark你必须部署它在辅助路径上,因为一旦您的蜂巢会话关闭,蜂巢只会存储您的功能的定义,但不会存储位置和位置,它将进入辅助路径。
有关udf部署的更多信息,请查看https://www.cloudera.com/documentation/enterprise/5-4-x/topics/cm_mc_hive_udf.html