2016-05-01 19 views
-1

我問心無愧工作的Python元組和有一個文本文件,它看起來像MapReduce的排序Python的元組數值上

(1,value1) 
(2,value2) 
(3,value3) 
... 
(100,value100) 

我如何配置我的MapReduce工作由元組作爲一個整數的第一個關鍵排序?

我減少的工作需要輸出一個元組的排序列表,所以我不想開始用製表符替換括號和逗號。將元組翻譯回去會很痛苦。如果你的價值觀是整數,則可以使用eval功能,避免拆卸/轉換任務

hadoop jar /usr/local/Cellar/hadoop/2.*/libexec/share/hadoop/tools/lib/hadoop-streaming-2*.jar 
-D mapreduce.job.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator 
-D mapreduce.partition.keycomparator.options=-n 
-reducer reducer.py 
-input tuples.txt 
-output sortedtuples 

感謝

+0

你可以在python中以百萬種方式運行map-reduce-style作業。你如何運行你的?這是py-spark嗎? – gnicholas

+0

增加了更多信息。看到編輯的問題 – Jack

回答

1

,我從我的bash Hadoop的工作具有以下參數。這裏有一個你想要的例子:

f = open('sourceFile.txt') 
L = f.readlines() 
f.close() 
MyList = sorted(map(eval,L) , key=lambda x: x[0])