0

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

换句话说,我只是想将“密钥相等条件”更改为另一个条件。

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

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

提前致谢!

4

1 回答 1

0

我每个工作只有一个 Reducer 功能,我同意这一点。但是,当我在 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 收集到同一个任务(假设这两个键有共同点),这样我就可以从一个 reducer 任务中访问所有这些值(对应于 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
于 2014-06-09T07:58:41.620 回答