2012-07-17 101 views
2

我加入使用Disributed緩存.jar文件的類路徑:添加罐子

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

我不知道addFileToClassPath()是否將被用於添加的.jar正確的API文件到類路徑。當我嘗試從映射器中檢索類路徑時,我看不到添加的jar。類路徑包含作業的工作目錄(jobcache目錄),但不包括通過分佈式緩存分發的jar。

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

我試過addArchiveToClassPath()太..它並沒有工作..

我缺少的東西?

謝謝,

回答

2

是你添加到本地文件系統或HDFS的類路徑的jar嗎?

DistributedCache預計您的名稱將在HDFS中的路徑

+0

罐子是HDFS .. – user1530241 2012-07-17 14:34:06

7

問題在於路徑。 addFileToClassPath()addArchiveToClassPath()僅以絕對路徑作爲輸入。二進制/ tools.jar是相對的,因此沒有工作。我需要指定路徑爲/user/<username>/binary/tools.jar..現在它工作正常。即使hdfs://<hostname>:port/user/..失敗。

謝謝大家..

+0

這意味着我必須解析URI並去掉了'(HDFS://主機名:端口|文件:)'我自己。 BLECH。謝謝你的提示! – 2013-09-02 22:44:00