如何在java应用程序的hiveshell中添加jar

cyej8jka  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(374)

我想在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);
cbjzeqam

cbjzeqam1#

我设法解决了这个问题
由于文件系统的配置,进程失败。在将jar添加到会话之前,我们将其上载到该对象。
这就是初始化文件系统的方式 FileSystem fs = FileSystem.newInstance(conf); 对象conf应该具有配置单元服务器的属性。
为了让这个过程正常工作,我需要在configuration属性上设置以下参数 conf.set("fs.defaultFS", hdfsDstStr);

相关问题