我正在寻找hadoop(使用Streaming和Python)通过前两个键对Mapper的输出进行排序;
我的映射器打印如下print '%s\t%s\t%s' & (num1, num2, value)
我希望我的Reducer接收按num1
然后num2
排序的数据,以便输出:
2 1 C
1 2 A
10 3 D
1 10 B
交付给减速器(假设我们有3个减速器):
1 2 A
1 10 B
-----------
2 1 C
------------
10 3 D
我尝试使用mapred.text.key.partitioner.options
选项将其设置为-k1n,1 -k2n,2
,但这似乎不起作用。
有什么想法吗?
我基本上希望Hadoop执行此unix
排序:sort -k1n,1 -k2n,2
我使用的Hadoop版本是0.20.2
谢谢
答案 0 :(得分:0)
我没有回答你的问题,但这里有一个解决方案:如果你只是在mapper输出中连接num1
和num2
,那么默认排序就可以了。
请注意打印格式:您需要在非零数字之前控制零的数量(例如0002
在0010
之前,但2
在10
之后。< / p>