hive:如何构建udtf?

ogsagwnx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我从教程中创建了自己的udtf函数,并将jar加载到hive中。现在我想创建自己的函数来调用udtf。

statement.executeUpdate("ADD JAR /home/hfu/myjar.jar;");
statement.executeUpdate("CREATE TEMPORARY FUNCTION my_function AS 'com.effectivemeasure.hive.UDFT'");

运行最后一个代码段时出现异常:

Exception in thread "main" java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:296)
    at org.apache.hive.jdbc.HiveStatement.executeUpdate(HiveStatement.java:406)
    at connectToHiveServer2.main(connectToHiveServer2.java:74)

我做错了什么?
以下是我使用的教程:
http://beekeeperdata.com/posts/hadoop/2015/07/26/hive-udtf-tutorial.html 以及http://www.ericlin.me/hive-user-defined-aggregation-function-udaf

iqih9akk

iqih9akk1#

我猜您正试图通过jdbc使用udf。尝试以下操作:
拆除;在每行的末尾
使用execute而不是executeupdate
确保jar存在于配置单元服务器所在的位置
第三个值得一提。当您从shell执行配置单元查询时,您的配置单元shell将udtfjar与其他配置单元jar打包在一起,并将其作为hadoop作业提交。当使用jdbc时,这项工作是由配置单元服务器完成的,因此jar必须存储在该路径中,但必须存储在配置单元服务器上,而配置单元服务器可能不是您用来运行程序的同一台机器。

相关问题