2013-11-22 45 views
0

當項目被映射到基於鍵的簡化器時,單個簡化器是否會收到包含單個鍵的列表,或者簡化器是否包含散列到該簡化器的所有鍵?什麼在Hadoop Reducer中結束?

例如: 我有7個唯一的ID映射。

當我編寫我的reduce方法時,我是否可以假設當我遍歷列表中的所有元素時,我將只有一個唯一的ID?或者我可以在減速器中使用更多的一個ID嗎?

回答

2

每次調用reduce()時都會有一個鍵和一個或多個值。這是明顯的從Map.reduce()方法的簽名:reduce(KEYIN key, Iterable<VALUEIN> values, Context context)

一些例子:

  • 如果你的映射器調用使用相同的密鑰Context.write() 10倍和10個不同的值,則降低()方法將被調用一次,並且values迭代器將提供10個不同的值。
  • 如果您的mapper使用10個不同的密鑰調用Context.write() 10次,則reduce()將被調用10次,每次使用不同的密鑰。

請記住,這是對默認情況的簡化。您可以使用自定義分組比較器和其他技術來更改此行爲。另外,請記住,根據您的集羣的設置,各種減速器可能不在同一臺機器上運行,也不能在與映射器相同的機器上運行。

相關問題