如何在 java 应用程序中的配置单元 shell 上添加 jars

How to add jars on hive shell in a java application

我正在尝试在配置单元上添加 jar shell。我知道服务器上的全局选项,但我的要求是在配置单元 shell 的每个会话中添加它们。 我已将此 class 用于 hdfs dfs 命令以将 jars 添加到 hdfs 文件系统

这是我试过的:

在 hdfs /tmp 上创建了一个文件夹 使用 FileSystem.copyFromLocalFile method 将文件添加到 hdfs 文件系统 (相当于hdfs dfs -put myjar.jar /tmp

在 fs 文件系统上设置文件权限

检查是否使用 getFileSystem method

将 jar 加载到 hdfs

使用 listFiles 列出 fs 文件系统上的文件以确认 jars 在那里。

这有效,我已将 jar 加载到 hdfs,但我无法将 jar 添加到配置单元会话

当我尝试将它添加到配置单元 shell 时,我正在执行以下操作:

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);

我设法解决了这个问题

进程因 FileSystem 的配置而失败。 在将 jar 添加到会话之前,该对象是我们上传 jar 的地方。

这就是你初始化文件系统的方式 FileSystem fs = FileSystem.newInstance(conf);

对象 conf 应具有配置单元服务器的属性。

为了让进程正常工作,我需要在配置中设置以下参数 属性 conf.set("fs.defaultFS", hdfsDstStr);