2012-05-14 41 views
0

像其他人一樣,我有一個關於mrjob的問題。 我正在使用hadoopcluster超過3個datanodes使用一個namenode和一個 jobtracker。 一記漂亮的樣本應用程序開始我下面hadoop與外殼上的mrjob管道

first_script.py: 
     for i in range(1,2000000): 
       print "My Line "+str(i) 

這顯然是寫一堆線到stdout 二級劇本是mrjobs映射器和減速寫的東西像 。 從UNIX(GNU)調用我想:

python first_script| python second_script.py -r hadoop 

GET操作上工作,但它上傳輸入到HDFS 完全。正當所有東西都上傳時,他正在開始第二份工作。 所以我的問題是: 是否有可能強制流? (像發送EOF?) 還是我得到了錯誤? 預先致謝 Joker P.S.我對我缺乏適當的英語表示歉意。我不是原生的 揚聲器

回答

0

很顯然,你早已忘記了這一點,但無論如何我都會回覆:不,它不可能強制一個流。整個hadoop編程模型是關於將文件作爲輸入和輸出文件(並可能創建副作用,例如將相同的東西上傳到數據庫)。

0

如果您澄清了想要實現更多功能,可能會有所幫助。 但是,聽起來好像您可能希望定期處理管道的內容,而不是等到流完成。這條河不能被迫。

管道的讀取器(您的second_script.py)需要打破其標準輸入成塊,或者使用