java - 未找到 Hive UDF 类

标签 java hive

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

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

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
[...]

你能看出我做错了什么吗?

最佳答案

该问题是由使用 add file 而不是 add jar 引起的,即

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

关于java - 未找到 Hive UDF 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31843354/

相关文章:

java - 根据 map 中的优先级对列表进行排序

java - 使用来自 Google API 的数据在文本字段中自动建议

hadoop - 在配置单元中执行某些 hql 时发生 AvroRuntimeException

java - 强制执行以避免循环依赖

java - 如何从 .jar 文件中访问与 .jar 文件位于同一文件夹中的 .dat 文件?

java - 线程 "main"java.lang.RuntimeException : Uncompilable source code 中的异常

hadoop - 在配置单元中删除表命令

hive - Hive 中的 INSERT OVERWRITE 语句中的列顺序重要吗?

sql - Hive - 通过跨组聚合值来创建映射列类型

apache-spark - 如何从PySpark将数据持久保存到Hive-避免重复