配置单元:udf错误失败:找不到类< classname>

e37o9pze  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(485)

我正在尝试使用myjar.jar作为配置单元中的udf函数,如下所示,

  1. echo "Add myjar.jar"
  2. $HIVE_HOME/bin/hive -e "ADD JAR /gpfs/user/username/HIVE/myjar.jar;"
  3. echo "List myjar.jar, this is showing local directory path"
  4. $HIVE_HOME/bin/hive -e "list jar;"
  5. $HIVE_HOME/bin/hive -e "drop function if exists myfunction;"
  6. echo "Create temporary function, my class name is UpperCase"
  7. $HIVE_HOME/bin/hive -e "CREATE TEMPORARY FUNCTION myfunction AS 'Upper.UpperCase';"
  8. $HIVE_HOME/bin/hive -e "SELECT myfunction(line) FROM doc where line='COCO';"

但我犯了以下错误,

  1. FAILED: Class Upper.UpperCase not found
  2. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

我怀疑问题可能是我的jar没有复制到本地节点目录。但我不确定。

7rtdyuoh

7rtdyuoh1#

ADD JAR 只适用于运行它的会话-但在您的情况下,您正在为每个语句运行一个新会话。相反,您应该将所有语句放在一个脚本中,并以类似的方式调用它:

  1. $HIVE_HOME/bin/hive -f yourscript.sql

相关问题