gpt4 book ai didi

java - reducer 可以在 Hadoop 中包含实例变量吗?

转载 作者:可可西里 更新时间:2023-11-01 15:02:33 26 4
gpt4 key购买 nike

我在网上看到关于 Reducer 有实例变量的例子

public static class MyReducer extends Reducer<IntWritable, Text, IntWritable, Text> {

private TreeMap<Integer, Long> counts = new TreeMap<Integer, Long>();

public void reduce(IntWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
/* populate TreeMap */
}
}

如果 MyReducer 对象的一个​​实例用于减少多个键,那么我们应该在某处清除 count。我们应该在哪里做这个?或者可能 MyReducer 的一个实例将用于一个 key。如果该键更改,将创建 MyReducer 的新实例。这个对吗?所以实际的问题是:如果我们有一个 reducer 任务,会创建多少个 Reducer 对象?一?还是按 key 创建?

最佳答案

每个任务有一个 Reducer 实例,而不是每个键。然后,为每个键调用一次 reduce 函数,因此如果在洗牌后一个 reducer 有 4 个键,那么它的 reduce 函数将被调用 4 次。

至于那个特定的代码示例,它不需要清除变量,因为我猜它正在存储每个键的值计数。由于该函数将为每个键调用一次,因此它将使用键作为 TreeMap 的键将每个键的计数存储在 TreeMap 中。

关于java - reducer 可以在 Hadoop 中包含实例变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com