簡體   English   中英

減速器可以從不同的映射器獲取多個輸入嗎?

[英]Can reducer take multiple inputs from different mappers?

減速機可以接受多個輸入嗎? 兩個映射器的鍵相同,但是值類型不同。 首先是一個MapReduce程序,該程序輸出(文本,floatwritable),其中floatwritable是值類型,文本是鍵。 第二個是輸出(文本,SongStats)的映射器,其中SongStats是實現Writable的自定義數據類型。 我希望減速器在運行計算時同時獲取較早的map reduce和第二個mapper的輸出。 我認為第一個MapReduce程序的輸出可能太大,無法容納在分布式緩存中。 任何指針都會有所幫助。 我正在用Java編寫程序。

不可以,reducer只能接受方法定義中定義的特定輸入:

public void reduce(Key key, Iterable<IntWritable> values,
                  Context context) throws IOException, InterruptedException {

最好的選擇是編寫一個新的MapReduce作業,該作業使用MultipleInputs將先前的MapReduce作業(具​​有文本,floatwritable)的輸出和其他Mapper(具有文本,SongStats)的輸出轉換為類似的類型(例如,文本,文字或最適合您需求的內容),然后將其傳遞給減速器。

資料來源:

https://hadoop.apache.org/docs/r2.9.0/api/org/apache/hadoop/mapreduce/Reducer.html

https://hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/mapreduce/lib/input/MultipleInputs.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM