我使用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()..它没有用。
我错过了什么吗?
谢谢,
答案 0 :(得分:7)
问题在于路径。 addFileToClassPath()
或addArchiveToClassPath()
仅将绝对路径作为输入。 binary / tools.jar是相对的,因此不起作用。我需要将路径指定为/user/<username>/binary/tools.jar..
现在它工作正常。即使hdfs://<hostname>:port/user/..
失败。
谢谢大家..
答案 1 :(得分:2)
您要添加到本地文件系统或HDFS中的类路径的jar?
DistributedCache期望您命名的路径为HDFS