2014-09-20 81 views
0

是否可以配置mapreduce程序,使得只有reducer不是執行mapper(即使程序中定義了map函數)。這可以通過改變作業配置來實現。將MapReduce程序配置爲僅在現有程序中運行減速器

我想在mapreduce中實現增量計算(輸入只作爲追加文件)。例如

對於單詞計數,

如果單詞計數已經在文件上,在此之後一些更多的數據被附加到輸入文件執行。

如果在更新的輸入文件上再次執行wordcount,我只想對新數據執行wordcount並將舊結果與此結合。 對於這種輸出組合,我想分別單獨執行減速器

+0

這完全取決於你在做什麼:你在加入數據還是你想減少已經排序的數據? – 2014-09-20 08:57:18

+0

我已經更新了我想要實現的問題。 – 2014-09-22 12:27:31

回答

1

不,這是不可能的。 Hadoop要求您執行map,而reduce是可選的。

如果你想做一個分組,你可以嘗試使用Apache Tez並配置一個DAG,它可以和你想要的一樣(可能還是hacky,因爲你需要使用內部數據格式) 。

0

是你可以!使用此代碼映射器(PYTHON_VERSION)

import sys for i in sys.stdin: print i

這將這樣的伎倆,因爲映射器是必須的。所以只需用虛擬映射器打印輸入的內容

我想這有幫助!