Hive:我如何构建UDTF?

时间:2015-11-21 17:33:29

标签: hadoop dictionary hive

我从教程中创建了一个自己的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.htmlhttp://www.ericlin.me/hive-user-defined-aggregation-function-udaf

1 个答案:

答案 0 :(得分:1)

我猜你正试图通过JDBC使用UDF。 请尝试以下方法:

  1. 删除;在每一行的末尾
  2. 使用执行而不是 executeUpdate
  3. 确保jar存在,其中hive服务器
  4. 3号值得评论。当您从shell执行配置单元查询时,您的配置单元shell会将UDTF jar与其他配置单元jar打包在一起,并将其作为hadoop作业提交。使用jdbc时,此作业由hive服务器完成,因此JAR必须存储在该路径中,但位于配置单元服务器上,这可能与您使用的机器不同运行你的程序。