2013-10-16 100 views
1

原來的map-reduce執行鏈是:InputSplits-->Mapper--> [Sorting/Shuffling, etc]-->Reducer-->...如何修改Map-Reduce執行順序?

現在我不想輸入分割去映射器第一,但去其他一些新的階段,而不是(我們可以把它叫做預映射程序例如,這個類將由我自己創建)。

所以新的順序將是:InputSplits -> Pre-Mapper->Mapper ->...

我目前正在讀的源代碼。但是,我仍然無法找到任何線索(我應該碰到哪些課程)。

任何建議是值得歡迎的。非常感謝你:)

回答

2

也許你應該在鏈接映射器看看:ChainMapper

+0

我從來沒有聽說過這門課。 我會更深入地看看它是否適合我的需求。非常感謝你:) –

1

可以實現它使用兩個階段的MapReduce:

階段一:映射器 - >排序/洗牌 - >減速[這個簡化器只是直接從Mapper寫入數據];

第二階段:Mapreduce;

這個階段,這裏是你在你的預映射器中做的事情;

+0

我認爲效率不高,事實上你有一個不起作用的減速器意味着你有一個排序階段,這是多餘的。 – DDW