hadoop - Hive:如何构建 UDTF?

标签 hadoop dictionary hive

我根据教程制作了自己的 UDTF 函数,并将 jar 加载到配置单元中。现在我想创建自己的函数来调用 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

最佳答案

我猜您正在尝试通过 JDBC 使用 UDF。 尝试以下操作:

  1. 删除;在每行的末尾
  2. 使用execute 代替executeUpdate
  3. 确保 jar 存在于配置单元服务器所在的位置

第 3 条值得评论。当您从 shell 执行 hive 查询时,您的 hive shell 会将 UDTF jar 与其他 hive jar 打包在一起,并将其作为 hadoop 作业提交。使用 jdbc 时,这项工作由配置单元服务器完成,因此 JAR 必须存储在该路径中,但配置单元服务器上,这可能不是您用来运行您的机器的同一台机器程序。

关于hadoop - Hive:如何构建 UDTF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846451/

相关文章:

scala - 需要使用来自 spark 的数据库限定符访问 Hive 表

hadoop - 访问 hdfs 文件夹

shell - 使用Shell远程查询Hive

hadoop - hdfs 会保留 CSV 文件的列标题吗?

c# - 在字典中存储对对象的引用

mysql - 返回用户的 SQL 计数

hadoop - 如何配置本地主机的实际设置?

python - 从python中的字典列表构造两个列表

python - 保存和检索 Python 对象属性值到文件

sql - 按值范围分组并删除 Hql/Sql 中的重复行