首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蜂巢:我如何建立一个UDTF?

蜂巢:我如何建立一个UDTF?
EN

Stack Overflow用户
提问于 2015-11-21 17:33:29
回答 1查看 393关注 0票数 0

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

代码语言:javascript
复制
statement.executeUpdate("ADD JAR /home/hfu/myjar.jar;");
statement.executeUpdate("CREATE TEMPORARY FUNCTION my_function AS 'com.effectivemeasure.hive.UDFT'");

当我运行最后一个CodeSnippet时,会得到一个异常:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-25 00:15:03

我猜您正试图通过JDBC使用UDF。尝试以下几点:

  1. 在每一行末尾移除;
  2. 使用execute代替executeUpdate
  3. 确保jar存在于hive服务器所在的位置。

第三条值得一提。当您执行来自shell的hive查询时,您的hive将将UDTF与其他hive一起打包,并将其作为hadoop作业提交。当使用jdbc时,这个工作是由hive服务器完成的,因此JAR必须存储在该路径中,而是存储在hive服务器上,这可能不是运行程序所用的同一台机器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33846451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档