我必须在配置单元中添加UDF。 我正在尝试的查询是:
create function strip1 as 'com.hadoopbook.hive.Strip' using jar '/home/hduser/Hadoop-tutorial/hadoop-book-master/ch17-hive/src/main/java/com/hadoopbook/hive/Strip.jar'
但我得到一个例外:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.FunctionTask返回代码1。 Hive仓库是非本地的,但/home/hduser/Hadoop-tutorial/hadoop-book-master/ch17-hive/src/main/java/com/hadoopbook/hive/Strip.jar指定本地文件系统上的文件。非本地仓库上的资源应指定非本地方案/路径
有人能说出如何解决这个问题吗?
答案 0 :(得分:0)
三个选项:
OR
错误告诉您:在$HIVE_HOME/conf
目录中,hive-default.xml
和/或hive-site.xml
具有hive.metastore.warehouse.dir
属性。将hdfs:/
添加到此路径,然后重新启动/重新运行hive shell / script:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://usr/hive/warehouse </value>
<description>location of the warehouse directory</description>
</property>
OR
如果您正在从hive shell运行配置单元查询,那么:
hive> set hive.metastore.warehouse.dir;
hive.metastore.warehouse.dir=/user/hive/warehouse
上面的命令打印路径,只需在hdfs:/
前面添加前缀,然后重新运行你的hive命令:
hive> set hive.metastore.warehouse.dir="hdfs://user/hive/warehouse";
答案 1 :(得分:0)
您可以将配置hive.aux.jars.path
设置为/home/hduser/Hadoop-tutorial/hadoop-book-master/ch17-hive/src/main/java/com/hadoopbook/hive/
并通过以下命令创建配置单元udf函数:
create function strip1 as 'com.hadoopbook.hive.Strip'
答案 2 :(得分:0)
您可以首先尝试将UDF jar添加到hdfs位置而不是本地目录:
let stockValues:any;
stockValues= Object.values([2,3,4,5]);
for(var i=0;i<stockValues.length;i++){
console.log(stockValues[i] );
}
,然后创建如下配置单元功能:
$ add jar "hdfs://user/cloudera/hive/udf/Strip.jar"
希望这会有所帮助:)