通过分布式缓存hadoop添加jar

时间:2012-07-17 12:16:26

标签: hadoop

我使用Disributed Cache:

将.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()..它没有用。

我错过了什么吗?

谢谢,

2 个答案:

答案 0 :(得分:7)

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

谢谢大家..

答案 1 :(得分:2)

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

DistributedCache期望您命名的路径为HDFS