我正在使用Python並且必須使用Hadoop Streaming處理以下場景:a)Map1-> Reduce1-> Map2-> Reduce2 b)我不dont想要存儲中間文件 c)我不想安裝像Cascading,Yelp,Oozie這樣的軟件包。我把它們作爲最後的選擇。我們可以在Hadoop Streaming(lang:Python)中級聯多個MapReduce作業
我已經通過了關於SO和其他地方的討論,但是找不到Python的答案。你可以請建議。
我正在使用Python並且必須使用Hadoop Streaming處理以下場景:a)Map1-> Reduce1-> Map2-> Reduce2 b)我不dont想要存儲中間文件 c)我不想安裝像Cascading,Yelp,Oozie這樣的軟件包。我把它們作爲最後的選擇。我們可以在Hadoop Streaming(lang:Python)中級聯多個MapReduce作業
我已經通過了關於SO和其他地方的討論,但是找不到Python的答案。你可以請建議。
B)我不想存儲中間文件
三)我不想安裝包,比如層疊,Yelp的,Oozie的。
任何原因爲什麼?根據迴應,可以提供更好的解決方案。
中間文件無法避免,因爲之前的Hadoop作業的o/p無法作爲i/p流式傳輸到下一個作業。創建這樣
運行流JOB1
腳本,如果JOB1是不是成功,然後退出
運行流作業2
如果作業2是成功刪除它們JOB1其他出口O/P
運行流作業3
如果作業3是他們成功的情況下刪除作業2否則退出的O/p
爲什麼不使用的MapReduce框架蟒蛇流,像小飛象https://github.com/klbostee/dumbo/wiki/Short-tutorial,或MRJob http://packages.python.org/mrjob/
例如,小飛,你管會:
job.add_iter(Mapper1, Reducer1)
job.add_iter(Mapper2, Reducer2)
- 因爲我剛開始學習的Hadoop(一個項目),這我應該如何去 - 對於「JOB1」 ,「job2」等我是否需要定義一些工作? - 正如你所說,我會嘗試你的方法。但是在這種情況下,只要編寫一個腳本就行了?我不是想用一些命令行,如「hadoop * streaming * .jar -input -put -mapper
我明白了,它很好用,謝謝。 – 2012-01-16 04:24:01