HIVE:UDF 错误失败:Class <ClassName> 未找到
HIVE: UDF Error FAILED: Class <ClassName> not found
我正在尝试使用 myjar.jar 作为 HIVE 中的 UDF 函数,如下所示,
echo "Add myjar.jar"
$HIVE_HOME/bin/hive -e "ADD JAR /gpfs/user/username/HIVE/myjar.jar;"
echo "List myjar.jar, this is showing local directory path"
$HIVE_HOME/bin/hive -e "list jar;"
$HIVE_HOME/bin/hive -e "drop function if exists myfunction;"
echo "Create temporary function, my class name is UpperCase"
$HIVE_HOME/bin/hive -e "CREATE TEMPORARY FUNCTION myfunction AS 'Upper.UpperCase';"
$HIVE_HOME/bin/hive -e "SELECT myfunction(line) FROM doc where line='COCO';"
但是我遇到了以下错误,
FAILED: Class Upper.UpperCase not found
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
我怀疑问题可能是我的 jars 没有复制到本地节点目录。但我不确定。
ADD JAR
仅适用于它在 运行 中的会话 - 但在您的情况下,您正在 运行 为每个语句创建一个新会话。相反,您应该将所有语句放在一个脚本中,并以类似的方式调用它:
$HIVE_HOME/bin/hive -f yourscript.sql
我正在尝试使用 myjar.jar 作为 HIVE 中的 UDF 函数,如下所示,
echo "Add myjar.jar"
$HIVE_HOME/bin/hive -e "ADD JAR /gpfs/user/username/HIVE/myjar.jar;"
echo "List myjar.jar, this is showing local directory path"
$HIVE_HOME/bin/hive -e "list jar;"
$HIVE_HOME/bin/hive -e "drop function if exists myfunction;"
echo "Create temporary function, my class name is UpperCase"
$HIVE_HOME/bin/hive -e "CREATE TEMPORARY FUNCTION myfunction AS 'Upper.UpperCase';"
$HIVE_HOME/bin/hive -e "SELECT myfunction(line) FROM doc where line='COCO';"
但是我遇到了以下错误,
FAILED: Class Upper.UpperCase not found
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
我怀疑问题可能是我的 jars 没有复制到本地节点目录。但我不确定。
ADD JAR
仅适用于它在 运行 中的会话 - 但在您的情况下,您正在 运行 为每个语句创建一个新会话。相反,您应该将所有语句放在一个脚本中,并以类似的方式调用它:
$HIVE_HOME/bin/hive -f yourscript.sql