2012-11-13 39 views
0

我已經設計,其中每個映射函數是假設其輸入(包含多個CSV記錄文件分割)加載到一個數據結構,並且對其進行處理,而不是通過加工線的系統線。將會有多個映射器,因爲我將處理數百萬條記錄,因此一個映射器完全沒有效率。加載文件分割的hadoop映射函數的輸入到數據結構

我從例子中看到的單詞計數,該映射函數由線讀取線。幾乎和map函數一樣,它爲每個從它接收到的分割線中調用。我相信這張地圖的輸入應該是完整的行本身,而不是一次發送一行。

Reduce函數手頭有其他任務。所以我想,地圖功能可以調整以完成其分配的任務。

是否有解決辦法?

幫助讚賞。

乾杯

回答

0

從你解釋一下我明白你的地圖輸入不單行,但是從幾行內置了一些結構。
在這種情況下 - 你應該創建自己的InputFormat,它將輸入流(從分割)轉換爲YourDataStructure cluss對象的序列。而你的映射器將接受這些YourDataStructure對象。

如果整個腳本實際上是要處理的結構 - 我會建議做映射所有的邏輯在一招 - 你應該知道什麼時候有在拆分最後一行。它可以通過繼承TextInputFormat並調整它來指示你有最後一行。然後,你在mapper中逐行建立你的結構,並在最後一行顯示時執行

+0

Thx供您參考。我沒有考慮過使用2個mapreduce作業。每個作業中的地圖功能僅僅是Identitymapper,不需要處理。作業中的減速器具有實際的功能。所以我打算簡單地依次運行它們。我打算從第一份工作中將縮減者直接發送給第二份工作的映射器,而不寫入磁盤。這可以實現嗎? – stholy

+0

後續問題:http://stackoverflow.com/questions/13369260/running-multiple-mapreduce-jobs-with-oozie – stholy