2015-10-28 20 views
3

我正在編寫一個mapreduce程序,其中有2個映射器和1個reducer,我爲每個映射器實現了自定義的可寫入數據類型。數據類型或多或少只是字段爲Text/Intwritable值的容器。如何處理reducer中的不同值類型

所以映射器1輸出ID(文本),M1Writable(我寫,但3場)

映射2個輸出ID(文本),M2Writable(我寫,但2場)

的減速將得到一個可迭代的值

這兩種類型的可寫入的工作如何不同?

如何確定它來自哪個映射器?

謝謝 我知道這是一個基本問題,但我有問題找到答案。

+0

爲什麼要考慮多映射器?爲什麼不使用一個映射器,並將輸出邏輯移至映射器。總之,輸出邏輯在一個映射器中,映射器可以根據需要輸出預期的輸出。 – luoluo

+0

您是否試圖通過兩個數據集實現減少邊連接? – Ramzy

+0

你們是對的,這只是更好的邏輯來保存我的映射器輸出或有一個抽象的可寫類,我的輸出可寫擴展,所以他們是相同的父類型。多謝你們 – VSEWHGHP

回答

2

MapReduce中的映射器總是輸出相同的類型。

除非M1Writable和M2Writable具有共同的父類(例如MWritable),這是所有映射器的常見輸出類型,您不能在映射器中輸出不同的類型。

要知道輸出來自哪個映射器,您需要將信息記錄在自定義MWritable對象中。

相關問題