2

我正在使用分布式缓存将 .jar 文件添加到类路径中:

DistributedCache.addFileToClassPath(new Path("binary/tools.jar"), job.getConfiguration());

我不确定 addFileToClassPath() 是否是用于将 .jar 文件添加到类路径的正确 API。当我尝试从映射器中检索类路径时,我看不到添加的 jar。类路径包含作业的工作目录(jobcache dir),但不包括通过分布式缓存分发的 jar。

Properties prop = System.getProperties();
System.out.println("The classpath is: " + prop.getProperty("java.class.path", null));

我也试过 addArchiveToClassPath() ..它没有工作..

我错过了什么吗?

谢谢,

4

2 回答 2

7

问题出在路径上。addFileToClassPath()addArchiveToClassPath()仅将绝对路径作为输入。binary/tools.jar 是相对的,因此不起作用。我需要指定路径,因为/user/<username>/binary/tools.jar.. 现在它工作正常。甚至hdfs://<hostname>:port/user/..失败。

谢谢你们..

于 2012-07-18T01:00:32.623 回答
2

您要添加到本地文件系统上的类路径中的 jar 还是 HDFS 中的 jar?

DistributedCache 期望您命名的路径位于 HDFS 中

于 2012-07-17T13:52:30.440 回答