mapreduce分区程序未按预期工作

oalqel3c  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(231)

我正在做一个mapreduce工作如下:map side:Map器将以 A\tB\t\t1 其中a和b一起是复合键。
我用过几个减速机(减速机是身份减速机, A -> A )在这个作业中,要根据复合密钥进行分区。我运行这个命令来启动mapreduce作业。

hadoop jar hadoop-streaming-2.7.1.jar \
 -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \
    -D stream.num.map.output.key.fields=2 \
    -D mapred.text.key.comparator.options="-k1n -k2n" \ 
    -D mapred.text.key.partitioner.options=-k1 \
    -D mapreduce.job.reduces=4 \
    -files /mapper,/reducer \
    -mapper ./mapper \
    -reducer ./reducer \
    -input /data \
    -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
    -output /result

我想要的输出如下:减速器a的输出:

A B 1 
A B 1 
A C 1 
A D 1 
A E 1

减速器b输出:

B E 1 
B G 1
E G 1 
B H 1

但是,现在的输出是,作为主键的a(在上面的情况下是a和b)可能出现在不同的还原器中。这里发生了什么有什么线索吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题