mapreduce按python元组进行数字排序

yzxexxkh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(324)

我正在使用python元组,有一个文本文件

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

如何将mapreduce作业配置为按元组中的第一个键作为整数排序?
我的reduce工作需要输出一个元组的排序列表,所以我不想开始用制表符替换括号和逗号。这将是一个痛苦的翻译回元组。
我正在用以下参数从bash运行hadoop作业:

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

谢谢

mbzjlibv

mbzjlibv1#

如果值是整数,则可以使用 eval 函数以避免删除/转换任务。以下是您想要的工作示例:

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

相关问题