在我的蜂巢脚本开始时,我有一条语句:
create function x as y using jar z;
现在,如果该功能已经存在,它将给我一个错误:
Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask. AlreadyExistsException(message:Function x already exists)
如果我使用create function if not exists x as y using jar z;
,我会收到此错误:
Error while compiling statement: FAILED: ParseException line 7:192 cannot recognize input near 'if' 'not' 'exists' in function identifier
语句create function if not exists
在Impala中可以使用,但是似乎蜂巢不支持它。这是在Hive中做类似事情的方式吗?
答案 0 :(得分:1)
我在配置单元中使用以下语句来创建临时功能。
ADD JAR hdfs:///tmp/udfs/jar1.jar;
DROP FUNCTION IF EXISTS rowid;
CREATE TEMPORARY FUNCTION rowid AS 'com.example.hive.jartest.RowIdUDF';
答案 1 :(得分:0)
为确保即使函数已经存在,我的hql始终运行,我选择:
set hive.exec.drop.ignorenonexistent = true;
drop function concat_i_t;
CREATE FUNCTION x
AS 'y'
USING JAR 'hdfs:///z';
但是,我想了解一个更优雅的解决方案