0

我是 java 新手,所以这可能是一个幼稚的问题,我有一个外部 jar 文件,我想以编程方式移动到 Hadoop 文件系统,我有 API 可以这样做,但我只需要提供 jar 文件的路径。我不想使用硬编码路径(绝对和相对),也许如果我可以将它与我的项目一起包含,或者可能是更好的东西,以便相同的代码在不同的机器上工作,相同的 jar 文件可能不会出现在不同机器上的相同位置,如果我将提供硬编码路径,那么我需要将文件显式复制到相同位置。


我已经为 Hive 编写了 UDF(jar 文件),它在我的磁盘上可用,现在要访问 Hive 中的 UDF,需要将 jar 添加到 HIVE 类路径,所以我想将 JAR 文件从本地系统复制到 HDFS,然后将 jar 添加到来自 HDFS 路径的 HIVE 类路径。

4

2 回答 2

1

您可以将两个 jar 文件放在同一个目录中,路径如下所示

    String path = System.getProperty("user.dir") + File.separator + "name.jar";

其中System.getProperty("user.dir") 将返回用户的当前工作目录(从其中运行第一个 jar 文件),而File.separator是系统相关的默认名称分隔符。

于 2012-05-04T09:51:34.913 回答
0

要在 Hive 上使用 UDF,您必须将包含 jar 的 UDF 添加到分布式缓存中,以便 Hive 集群中的所有节点都可以使用它。您可以使用如下语法来执行此操作:

add jar /path_to_jar/my_jar.jar

'/path_to_jar/' 是本地计算机上运行此命令的 jar 的路径。如果需要,可以在将 jar 添加到分布式缓存后,仅通过其名称从您的 MapReduce 或 Hive 代码中访问该 jar。

于 2012-05-09T00:29:33.683 回答