2013-07-11 25 views
1

是什麼差分功能

ChainMapper.addMapper(conf, UpperCaserMapper.class, Text.class, IntWritable.class, Text.class, IntWritable.class, true, mapBConf); 

ChainReducer.addMapper(conf, LastMapper.class, Text.class, IntWritable.class, Text.class, IntWritable.class, true, mapCConf); 

當使用之間的差異。

另外我無法得到第7個參數的含義。 第7個參數 - >指示鍵/值是否應該按值傳遞給鏈中的下一個映射器(如果有)。 我知道鑰匙/價值必須通過,如果其設置爲true。將該值設置爲false的用例可能是什麼。這是什麼意思?

+0

好吧我知道第七個參數意味着通過價值或通過引用。仍然有一個問題仍然是如何通過從映射器到縮減器的引用傳遞的。減速器可以在與映射器不同的機器上運行。請解釋一下嗎? –

回答

0

ChainMapper.addMapper & ChainReducer.addMapper沒有這樣的區別。兩者都相似,因爲它們將新的Mapper添加到鏈中。

是在於非常小的區別是: 如果你希望一個地圖後添加一個映射,使用ChainMapper.addMapper 如果希望在減速後添加一個映射,使用ChainReducer.addMapper

因此,一個作業可以按順序運行多個映射器進行預處理,在運行Reducer之後,它可以選擇運行映射器來後處理數據。 因此,使用這種機制,您正在編寫預處理和後處理步驟作爲標準映射器。

這被象徵爲Map +(多Mappers) - Reduce - Map *(可選)。