2012-02-29 63 views
1

我目前有一個任務,我需要在Hadoop中鏈接幾個工作。 我現在在洞裏是我有2個工作。我的第一份工作有一個地圖功能,一個組合器和一個減速器。那麼我需要一個減少的階段,所以我創建了一個簡單的地圖任務,將前一個減速器的輸出傳遞給最終減速器的第二個任務。 我發現這有點「愚蠢」,因爲必須有一種方法來簡單地鏈接這個。此外,我認爲I/O將會減少。Hadoop:在0.20.203鏈接工作

我使用0.20.203版本,我只找到使用JobConf的ChainMapper和ChainReducer的不推薦使用的例子。 我發現這些: http://hadoop.apache.org/mapreduce/docs/current/api/org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html http://hadoop.apache.org/mapreduce/docs/current/api/org/apache/hadoop/mapreduce/lib/chain/ChainReducer.html ,這似乎與工作類,而不是與在203棄用JobConf工作,但沒有包含在203

+0

你是說你發現它有點「愚蠢」,不得不編寫你自己的傳遞輸出的簡單地圖任務嗎?你的問題是什麼?你會從不同減速器的輸出中獲得相同的關鍵嗎? – 2012-03-01 03:51:50

+0

我在說,我只是想連鎖2個工作,而不必將第一份工作的輸出傳遞給第二份工作。用2個工作做這件事非常簡單,我知道,因爲我已經做到了。但是由於hadoop有一個優化的連鎖方式,減少了I/O,我只是想用這種方式。但我總是發現不贊成的例子。我有3本關於hadoop的書,它們都有不合適的例子。現在我已經找到了另一種方式來做到這一點,比有2個工作更有效率,我保留這個職位,因爲我找不到任何其他關於鏈接的帖子(對於203版本)。感謝您的關注 – jojoba 2012-03-01 18:41:51

回答

0

你可以認爲這些類的任何包使用oozie。創建工作流將會更容易。

+1

我已經看到這些oozie和級聯帖子。由於有一個選項,我可以使用hadoop api來做到這一點,我不想使用其他任何東西。 Oozie會比我想象的更復雜的任務 – jojoba 2012-02-29 21:05:11