2012-07-14 37 views

回答

1

對於組合器,如果您將Hadoop MR設置爲使用一個,它將處理來自所有映射器的輸出。您無法指定特定的映射器。

也許考慮這兩個選項:

  1. 應用組合的所有輸出 - 你的映射從映射器輸出到一個共同的類型,這樣他們可以(參加?)由減速處理。考慮一下聯合收割機是否能正常工作,而不管數據來自哪個映射器。對這個想法的一個修改是在你的鍵值輸出中設置一個類型變量,並將其用在合成器中以決定天氣做什麼。

  2. 使用地圖本地組合 - 如果您知道其中一個映射器的輸出結合良好,您可以在映射器本身內進行一些聚合/組合,並且只能定期寫入輸出。爲了使這個工作良好,你需要對工作中的輸入數據有一定的瞭解。

0

該查詢有點不清楚。我假設你問的是重複使用相同的組合器來組合兩個不同的映射器的輸出。這應該是可能的,因爲這兩個映射器的輸出是相同的。

使用MultipleInputs類可以在單個作業中使用兩個映射器,或者可以用於兩個不同的作業。無論如何,組合器必須在每個作業的基礎上指定。

此外,請注意

1)中的O /映射器的p應該匹配減速機的I/P。

2)映射器的o/p應該與組合器的I/P匹配。

3)組合器的I/P和O/P應該是相同的類型。

0

組合器適用上的最後一個鏈映射器,樣本代碼附

ChainMapper.addMapper(job, SalesRecordMapper.class, LongWritable.class, Text.class, Text.class, DoubleWritable.class, configuration); 

ChainMapper.addMapper(job, ItemDiscountMapper.class, Text.class, DoubleWritable.class, Text.class, DoubleWritable.class, configuration); 

job.setCombinerClass(DoubleReducer.class); 
相關問題