2011-12-21 72 views
0

我懷疑輸出文件名的生成。我正在使用Hadoop-0.19.2,並且在輸入文件夾(/ data/inp/20111203_12345,/ data/inp/20111204_12345)上有兩個輸入文件,我想生成輸出文件夾(/ data/out/20111203_12345/part-0000X,/ data/out/20111204_12345/part-0000x)如何生成自定義輸出文件名稱?

Map Reduce程序只被調用一次。

+0

你的問題是什麼......?它如何涉及編程? – wormsparty 2011-12-21 13:36:17

回答

0

由於輸入文件和輸出文件之間存在1對1映射關係,因此可以假定跨輸入文件沒有合併數據。

1)在映射器中,執行一些處理並將KV對輸出爲filePath/value。然後,特定文件的所有數據將轉到單個映射器。在映射程序中執行以下操作以獲取文件路徑

void configure(JobConf conf) { 
    filePath = conf.get("map.input.file"); 
} 

請注意,filePath包含輸入文件名,包括目錄。

2)MultipleOutputformat允許將數據寫入多個文件,輸出文件名可以從輸出KV對派生。 reducer的鍵將是輸入文件目錄和名稱,可用於派生輸出文件名。

使用上述方法,如果輸入文件很大,減速器可能是瓶頸,因爲每個減速器將處理單個文件中的數據。我想不出更好的辦法:)

+0

非常感謝。它使我工作。 – Thamizh 2011-12-25 17:15:14

相關問題