2012-07-22 117 views
0

我有一個具有以下輸入文件拆分鍵/在地圖中值輸入文件/ reduce任務

File1 value1 
File1 value2 
File2 value3 
File2 value4 

映射器將訪問的文件名並搜索它的具體價值的MapReduce任務。

問題: 我想要優化技術來優化這些文件的磁盤訪問。我需要將相同的文件ID分配給相同的映射器。所以我可以確保該文件一次只能由一個任務訪問。

例子: 要求

Mapper 1: File1 (value1), File1 (value2) 
Mapper 2: File2 (value3), File2 (value4) 

不要求:

Mapper 1: File1 (value1), File2 (value3) 
Mapper 2: File1 (value2), File2 (value4) 

任何幫助嗎?

回答

0

我想這

File1 value1 
File1 value2 
File2 value3 
File2 value4 

被寫入到一個現有的文件

的方式,以確保你想要的是排序第一列此輸入文件(並存儲它排序)

+0

排序後會發生什麼? – 2012-07-23 00:49:30

0

我不認爲有可能將特定數據發送到地圖任務而不分區輸入數據。根據需要對輸入數據進行分區並使用TextFileInputFormar.isSplittable()

0

我可以虛心地建議你使用減速器來達到你想要的效果。

將鍵的所有值都歸爲同一個任務,就是「reduce」的定義。

如果需要進一步減少,請在第一個輸出上運行另一個作業。

0

對於圖片中的2個文件,默認情況下,您將默認使用默認TextInputFormat作爲hadoop輸入格式的2張圖。

所有您需要做的是InputFormat延伸的TextInputFormat創建自定義和覆蓋isSplittable()方法返回。在這種情況下,一個文件將被一個映射器完全處理,另一個文件完全由另一個映射器處理。

相關問題