Java 收集不同的键到同一个reducer函数-HADOOP

Java 收集不同的键到同一个reducer函数-HADOOP,java,hadoop,partitioner,Java,Hadoop,Partitioner,我想将至少有一个共同整数的键的所有值收集到同一个reducer函数中。例如,所有​​对应于键“1,2”和所有​​与键“2,3”相对应的键必须始终处于同一个减速器函数中,因为这两个键具有相同的整数2 另一方面,我只想将“键相等条件”更改为另一个条件 有办法做到这一点吗?它与Partitioner类相关还是我必须做一些完全不同的事情 如果这很重要,我会使用1.2.1 hadoop版本 提前谢谢 我同意,每个作业只有一个减速器功能。然而,当我在NetBeans(而不是分布式模式)中以模拟方式运行had

我想将至少有一个共同整数的键的所有值收集到同一个reducer函数中。例如,所有​​对应于键“1,2”和所有​​与键“2,3”相对应的键必须始终处于同一个减速器函数中,因为这两个键具有相同的整数2

另一方面,我只想将“键相等条件”更改为另一个条件

有办法做到这一点吗?它与Partitioner类相关还是我必须做一些完全不同的事情

如果这很重要,我会使用1.2.1 hadoop版本


提前谢谢

我同意,每个作业只有一个减速器功能。然而,当我在NetBeans(而不是分布式模式)中以模拟方式运行hadoop时,它会为每个唯一键创建一个reducer任务。例如,如果我只有3个键(k1、k2、k3),它将调用reduce函数3次,每个键一次

example:
Reducer: key=k1
values which correspond to k1
Reducer: key=k2
values which correspond to k2
Reducer: key=k3
values which correspond to k3
因此,与键k1相对应的值只能从减速器的任务中访问,k2和k3值也是如此。我想做的是将k1和k2收集到同一个任务中(假设这两个键有共同点),这样我就可以从一个任务中访问所有这些值(对应于k1和k2键)

另外,我读了这篇文章,我认为我理解它,直到我运行它,我看到它再次创建了2个reducer任务,而不是3个,这是分区器中年龄组的数量

output example:
Reducer: female
Monica<tab>56<tab>92
Kristine<tab>38<tab>53
Alice<tab>23<tab>45
Nancy<tab>7<tab>98
Mary<tab>6<tab>93
Clara<tab>87<tab>72
Reducer: male
James<tab>34<tab>79
Jacob<tab>7<tab>23
Alex<tab>52<tab>69
Bob<tab>34<tab>89
Chris<tab>67<tab>97
Adam<tab>9<tab>37
Connor<tab>25<tab>27
Daniel<tab>78<tab>95
输出示例:
减速器:女性
莫尼卡5692
克里斯汀3853
Alice2345
南昌798
玛丽693
克拉拉8772
减速器:公
詹姆斯3479
雅各布723
亚历克斯5269
Bob3489
克里斯6797
Adam937
康诺尔2527
丹尼尔7895

您是指减速机功能还是减速机任务?因为每个作业只能有一个reducer函数…如果你是指reducer任务,那么yes partitioner函数将帮助你…还要记住,所有具有相同值的键都必须转到同一个reducer任务我在下面对其进行了详细分析!