gpt4 book ai didi

hadoop - 无法在配置单元服务器上运行 UDF

转载 作者:可可西里 更新时间:2023-11-01 14:13:33 29 4
gpt4 key购买 nike

我在节俭服务器模式下运行配置单元。我在 jar 文件中有一个 UDF,我试图通过运行来使用它

add jar <path to jar>
create temporary function func_name as 'com.test.udf.UDF_CLASS'

但是,当我运行创建临时函数命令时出现错误

Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

我已经检查了 jar 的名称和路径,以及运行 hive 服务器的用户是否具有访问 jar 的所有正确权限。奇怪的是,如果我在 CLI 模式下运行配置单元并运行完全相同的命令,那么一切正常。关于为什么 hive CLI 的行为可能与 hive thrift 服务器不同的任何想法?

最佳答案

玩了一会儿后,我将 .class 文件放入与其包匹配的目录结构中,然后从那里将其添加到 .jar 中,让它开始工作。作为引用,我已经包含了整个过程,包括编译和插入到配置单元中。

  1. 我使用了 UDF 示例 here
  2. 编译它:javac -classpath $CLASSPATH Lower.java注意:CLASSPATH 定义如下:CLASSPATH=$(ls $HIVE_HOME/lib/hive-serde-*.jar):$(ls $HIVE_HOME/lib/hive-exec-*.jar) :$(ls $HADOOP_HOME/hadoop-core-*.jar),如所述here .
  3. 将 .class 文件复制到文件夹 com/example/hive/udf/
  4. 使用以下命令将其添加到 jar 中:jar -cf lower.jar com/example/hive/udf/Lower.class
  5. 验证包看起来是否正确:jar -tf lower.jar。您应该看到这样一行:com/example/hive/udf/Lower.class
  6. 将 jar 导入配置单元。 添加 jar lower.jar;创建临时函数 my_lower 作为 'com.example.hive.udf.Lower';

关于hadoop - 无法在配置单元服务器上运行 UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407632/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com