找不到Hive UDF类

时间:2015-08-05 21:43:14

标签: java hive

我需要在Hive中使用自动递增的整数列,并偶然发现UDFRowSequence

我在IntelliJ中创建了一个Maven项目,添加了.java文件,让IDE导入依赖项。然后我运行了mvn package,将生成的.jar复制到群集节点,并在Hive中添加了.jar资源:

hive> add file udf-row-sequence-1.0-SNAPSHOT.jar;
Added resources: [udf-row-sequence-1.0-SNAPSHOT.jar]

不幸的是,我无法创建临时功能:

hive> create temporary function row_sequence as 'com.alexwoolford.hive.udf.UDFRowSequence';
FAILED: Class com.alexwoolford.hive.udf.UDFRowSequence not found
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

然而,如果我查看.jar文件的内容,我可以看到该类存在:

jar tf udf-row-sequence-1.0-SNAPSHOT.jar
[...]
com/alexwoolford/hive/udf/UDFRowSequence.class
[...]

你能看出我做错了吗?

2 个答案:

答案 0 :(得分:1)

问题是由使用add file代替add jar引起的,即

add jar udf-row-sequence-1.0-SNAPSHOT.jar;

答案 1 :(得分:0)

即使你做了#34; ADD JAR",有时甚至添加JARS的顺序都很重要,我在添加ESRI Hive UDF jar时遇到了这个问题。

add jar esri-geometry-api-1.2.jar;
add jar spatial-sdk-hive-1.0.3-SNAPSHOT.jar;

作品

add jar spatial-sdk-hive-1.0.3-SNAPSHOT.jar;
add jar esri-geometry-api-1.2.jar;

不能工作