【问题标题】:-Dpig.additional.jars with files on both HDFS and the local filesystem-Dpig.additional.jars 包含 HDFS 和本地文件系统上的文件
【发布时间】:2026-02-19 15:35:01
【问题描述】:

如何将 jar 从本地文件系统和 Hadoop 分布式文件系统 (HDFS) 传递到 -Dpig.additional.jars

假设我有两个罐子:

  1. /home/local/myjar1.jar
  2. hdfs:///user/notlocal/myjar2.jar

第一个 jar 在我的本地目录中。第二个 jar 在 HDFS 中。

我想在 Hadoop 集群上运行 test_script.pig1 并将上述两个 jar 包含在 -Dpig.additional.jars 中。

pig -x mapreduce -f test_script.pig1 -Dpig.additional.jars=/home/local/myjar1.jar:hdfs:///user/notlocal/myjar2.jar 不起作用,因为 hdfs 被视为文件(因为它后面有一个冒号)。

我该如何进行这项工作?

【问题讨论】:

  • 你找到答案了吗?

标签: hadoop mapreduce apache-pig


【解决方案1】:

我没有找到将 Hadoop 分布式文件系统 (HDFS) 上的 jar 传递到我的本地文件系统的方法。

我想出了一个解决方法:将 HDFS jar 移动到本地文件系统。

假设我有两个罐子:

  1. /home/local/myjar1.jar
  2. hdfs:///user/notlocal/myjar2.jar

第一个 jar 在我的本地目录中。第二个 jar 在 HDFS 中。

我将 HDFS 上的 myjar2.jar 复制到我的本地文件系统:

hadoop fs -copyToLocal /user/notlocal/myjar2.jar /home/local/

然后我做了:

pig -x mapreduce -f test_script.pig1 -Dpig.additional.jars=/home/local/myjar1.jar:/home/local/myjar2.jar

【讨论】: