我从教程中创建了一个自己的UDTF函数,并将jar加载到hive中。现在我想创建自己的函数来调用UDTF。
statement.executeUpdate("ADD JAR /home/hfu/myjar.jar;");
statement.executeUpdate("CREATE TEMPORARY FUNCTION my_function AS 'com.effectivemeasure.hive.UDFT'");
运行最后一个CodeSnippet时出现异常:
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
答案 0 :(得分:1)
我猜你正试图通过JDBC使用UDF。 请尝试以下方法:
3号值得评论。当您从shell执行配置单元查询时,您的配置单元shell会将UDTF jar与其他配置单元jar打包在一起,并将其作为hadoop作业提交。使用jdbc时,此作业由hive服务器完成,因此JAR必须存储在该路径中,但位于配置单元服务器上,这可能与您使用的机器不同运行你的程序。