2013-02-06 53 views
0

我正在處理大量的小文件,並使用combineFileInputFormat來避免執行大量的地圖任務。它工作正常,但問題是,我需要有每個文件的ID,這樣所有的文件的ID是1.我怎麼能保持文件的ID?我必須添加一些代碼到我的combineFileInputFormat?如何在hadoop中爲java使用combineFileInputFormat?

+0

你想要找出每個Map輸入來自哪裏的文件名嗎? –

+0

@ChrisWhite例如我有100個文件,我需要他們的名字。但是當我使用CombineInputFormat時,我無法獲取文件名。 – user1878364

回答

0

CombineFileRecordReader配置當前文件是處理的配置屬性,所以你應該能夠從map.input.file屬性獲取當前文件名:

@Override 
protected void map(Longwritable key, Text value, Context context) { 
    String filePath = context.getConfiguration().get("map.input.file"); 
} 

如果您在使用舊的API( mapred),屬性名稱是相同的。

+0

謝謝,但我想我的文件名在我的地圖功能。我可以訪問你提到的方法從地圖?或者我可以在Map中做到這一點? – user1878364

+0

上面的代碼片段是一個地圖方法 - 只需添加你的代碼! –

相關問題