我對map縮小輸出零件文件有一些疑問。map reduce output files:part-r- * and part- *
-
1> map-reduce輸出中的part-r- *文件和part- *文件有什麼區別? part-r- *從mapper輸出,part- *從reducer輸出?
2>如果reducer沒有產生任何結果,mapper輸出將停留或將被刪除?
我對map縮小輸出零件文件有一些疑問。map reduce output files:part-r- * and part- *
通常,part-r- *來自減速器。 MultipleOutputs
允許您使用不同的命名約定。如果沒有減少步驟,輸出將是部分m- *。據我瞭解,如果定義了reducer,不管reducer是否產生任何東西,mapper輸出都會被刪除。通常還會生成減速器輸出文件,即使它們是空的,除非您使用LazyOutputFormat
。你在哪裏找到沒有以m-nnnnn或r-nnnnn結尾的part- *文件?
對於舊版本(< 0.2),它們用於僅輸出part-000 *。但現在,我們看到部分m-n *(n代表編號ex:part-m-00000)和part-r-n *文件。 part-r-n *用於從reducer輸出。 part-m-n *是組合器的輸出。 (如果我不使用組合器,我沒有得到任何部分*我不確定它是否是默認行爲。)
part-00000是由mappers或reducer創建的輸出目錄舊的API。在新API中,它稍微更改爲part-m- *用於mapper輸出,part-r- *用於reducers輸出。 有關更多詳細信息,請參閱OReilly的Hadoop權威指南,頁碼28.
part-m-X是映射器的輸出,而不是組合器的輸出... – OhadR