Hadoop:按数字排序前两个键?

时间:2013-11-30 00:01:32

标签: hadoop hadoop-streaming

我正在寻找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

谢谢

1 个答案:

答案 0 :(得分:0)

我没有回答你的问题,但这里有一个解决方案:如果你只是在mapper输出中连接num1num2,那么默认排序就可以了。 请注意打印格式:您需要在非零数字之前控制零的数量(例如00020010之前,但210之后。< / p>