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

piwo6bdm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

我想把至少有一个相同整数的键的所有值收集到同一个reducer函数中。例如,所有​​对应于键“1,2”和​​与键“2,3”相对应的键必须始终在同一个reducer函数中,因为这两个键具有相同的整数2。
换句话说,我只想把“键相等条件”改成另一个条件。
有办法吗?它与partitioner类有关还是我必须做一些完全不同的事情?
如果这很重要的话,我会使用1.2.1hadoop版本。
提前谢谢!

2vuwiymt

2vuwiymt1#

我每项工作只有一个减速机功能,我同意这一点。然而,当我在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对应的值只能从该reducer的任务中访问,对于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

相关问题