问题是:如果我声明一个temporary function
在蜂巢中像这样:
add jar /home/taobao/oplog/hivescript/my_udf.jar;
create temporary function getContentValue as 'com.my.udf.GetContentValue';
功能上会很好用getContentValue
在本次蜂巢会议中。但我想要的是不必在每次启动配置单元会话时添加 jar 以及创建临时函数。也就是说,使函数永恒的.
这个问题有什么解决办法吗?
自 0.13.0 起(HIVE-6047 https://issues.apache.org/jira/browse/HIVE-6047)您可以通过以下方式使 UDF 永久化:
CREATE FUNCTION [db_name.]function_name AS class_name [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ]
UDF 的示例:
CREATE FUNCTION getContentValue AS 'com.my.udf.GetContentValue' USING JAR '/home/taobao/oplog/hivescript/my_udf.jar';
欲了解更多信息,请检查Hive 数据定义语言 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-PermanentFunctions,引用它:
该语句允许您创建由 class_name 实现的函数。可以使用 USING 子句指定需要添加到环境中的 jar、文件或存档;当 Hive 会话第一次引用该函数时,这些资源将被添加到环境中,就像已发出 ADD JAR/FILE 一样。如果 Hive 不是本地模式,则资源位置必须是非本地 URI,例如 HDFS 位置。
该函数将被添加到指定的数据库中,或者添加到创建该函数时的当前数据库中。可以通过完全限定函数名称 (db_name.funciton_name) 来引用该函数,或者如果该函数位于当前数据库中,则可以不加限定地引用该函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)