1
我使用python開發的MapReduce程序,當我使用map.py和reduce.py通過COMAND行:的MapReduce沒有排序
cat passengers.dat | python map.py | sort | python reduce.py
結果是好的。但如果我嘗試使用mapreduce:
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.2.0.2.0.10.0-1.jar -input passengers.dat -output /out -file map.py -file reduce.py -mapper map.py -reducer reduce.py
結果是錯誤的,因爲它似乎沒有排序之前減少。
我,因爲通過命令行得出這樣的結論:
cat passengers.dat | python map.py | sort
結果是:
141181 2014 5 1 0 STA 267
141181 2014 5 1 1 END 1031
141181 2014 5 1 4 STA 1031
141181 2014 5 1 5 END 267
但是,當我重寫我的減少我們的行「減少」接收到理解什麼是問題:
#!/usr/bin/env python
import sys
for line in sys.stdin:
print line
結果是沒有排序:
141181 2014 5 1 1 END 1031
141181 2014 5 1 0 STA 267
141181 2014 5 1 5 END 267
141181 2014 5 1 4 STA 1031
第五列無序!!!爲什麼??!
謝謝
我在下面發表我的解決方案!
我不能複製你做的一切,但我創建的打印輸入的每一行喜歡你然後將其傳遞到排序Python程序。我輸入你的未分類輸入開始,它打印出所有排序的東西。所以我不知道該告訴你什麼。 – 2014-11-05 18:39:28
謝謝AtlasMeh-ed我解決了這個問題。 :) – MrElefant 2014-11-05 23:48:54
你應該[回答你自己的問題](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)。 – irrelephant 2014-11-06 07:26:49