我想在Hive壳上加一个jar。我知道服务器上的全局选项,但我的要求是在配置单元外壳上为每个会话添加它们。我将这个类用于hdfs dfs命令,以将jar添加到hdfs文件系统
这就是我尝试过的:
在hdfs/tmp上创建了一个文件夹,使用filesystem.copyfromlocalfile方法将文件添加到hdfs文件系统(相当于hdfs-put myjar.jar/tmp)
在fs文件系统上设置文件的权限
检查jar是否已使用getfilesystem方法加载到hdfs
使用listfiles列出fs文件系统上的文件,以确认jar是否存在。
这是可行的,我已经将jar加载到hdfs中,但是我不能将jar添加到配置单元会话中
当我尝试将其添加到Hive壳中时,我将执行以下操作:
statement = setStmt(createStatement(getConnection()));
query = "add jar " + path;
statement.execute(query);
我得到这个错误[例如/tmp/myjar.jar的路径]:
Error while processing statement: /tmp/myjar.jar does not exist
路径上的其他排列,例如
query = "add jar hdfs://<host>:<port>" + path;
query = "add jar <host>:<port>" + path;
结果出错。
命令列出jars工作(没有结果)
query = "list jars";
ResultSet rs = statement.executeQuery(query);
1条答案
按热度按时间cbjzeqam1#
我设法解决了这个问题
由于文件系统的配置,进程失败。在将jar添加到会话之前,我们将其上载到该对象。
这就是初始化文件系统的方式
FileSystem fs = FileSystem.newInstance(conf);
对象conf应该具有配置单元服务器的属性。为了让这个过程正常工作,我需要在configuration属性上设置以下参数
conf.set("fs.defaultFS", hdfsDstStr);