2015-03-31 46 views
0

我需要根據hadoop job.properties中的內容創建一個動態文件,然後將其放入分佈式緩存中。hadoop寫入文件並放入分佈式緩存

當我創建文件時,我發現它是用「/ tmp」的路徑創建的。

我創建了一個符號名稱並在緩存中引用此文件。現在,當我嘗試讀取Dis中的文件時。緩存我無法訪問它。我得到th錯誤:java.io.FileNotFoundException:請求的文件/tmp/myfile6425152127496245866.txt不存在。

您能否讓我知道如果我需要在創建文件時指定路徑,並在訪問/讀取文件時使用該路徑。

我只需要文件在作業運行前纔可用。

回答

0

我真的不明白你的

意思,我只需要該文件只提供直到作業運行

但是,當我的做法是使用分佈式緩存,我使用這樣的路徑:

final String NAME_NODE = "hdfs://sandbox.hortonworks.com:8020"; 
job.addCacheFile(new URI(NAME_NODE + "/user/hue/users/users.dat")); 

希望這會幫助你。

+0

感謝您的回覆。我的意思是,我希望只有在作業運行之前,文件才能在緩存中使用。由於該文件基於job.properties中的內容,每次作業都會隨之更改。我的查詢是,當我動態創建文件時,文件的絕對路徑是'/tmp/myfile6425152127496245866.txt'。但是,一旦我將它放入緩存並稍後嘗試引用它,我就會得到'/tmp/myfile6425152127496245866.txt'不存在。難道它是在另一個文件夾中引用文件,而它是在其他地方創建的..? – javauser 2015-03-31 17:22:19

+0

嗯,我認爲應該有一些問題與你使用的路徑。就我而言,如果我省略了NAME_NODE,我也會失敗。但我不知道你的情況是否是相同的情況。 – 2015-03-31 17:57:41