2014-04-01 23 views
0

我試圖做測試一個Hadoop的工作流映射和減速功能:Unix的排序產生錯誤的輸出

cat data.txt | python mapper.py | sort | python reducer.py 

但是從映射器輸出的排序是不正確的。

he the 1 
i  1 
i dog 1 
i like 1 
i'm  1 
i'm rob 1 
i'm the 1 
i the 1 ### this should be after "i like 1" ### 
lazy 1 

我有自己的機器上其他人的測試,他們得到有完全相同的映射功能和命令行執行正確的輸出。因此,我的Unix排序似乎出了問題。

如果這有助於:

echo $TERM 
> vt100 

什麼嘗試或設置不同,將不勝感激任何建議。謝謝

+0

是你的'data.txt'有史以來創建或在Windows機器上編輯?即使不是,請嘗試「dos2unix data.txt」,然後重新運行。祝你好運。 – shellter

+0

環境指定的區域設置會影響排序順序。 – alvits

+1

您的語言環境會整理'''和'',所以'sort'將它們比較爲平等,並使用下一個字符來打破平局。 – chepner

回答

5

你有你的答案here它是關於語言環境。總之,你應該使用

cat data.txt | python mapper.py | LC_COLLATE=C sort 
+0

這工作!謝謝 – MarkAWard

+0

不客氣。 – elbear