gpt4 book ai didi

hadoop - 关于此 map 的澄清减少字数示例?

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

我正在学习map reduce,我有一个关于map reduce的基本字数统计例子的问题。假设我的文字是

My name is X Y X.

这里是 map 类,我指的是

  public static class MapClass extends MapReduceBase
implements Mapper<LongWritable, Text, Text, IntWritable> {

private final static IntWritable one = new IntWritable(1);
private Text word = new Text();

public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException {
String line = value.toString();
StringTokenizer itr = new StringTokenizer(line);
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
output.collect(word, one);
}
}

当这个 Map 作业处理文本时,它会变成

My 1
name 1
is 1
X 1
Y 1
X 1

然后在洗牌和排序之后,所有相同的键将被分组,我们可以为最终计数做加法。在此示例中,将添加两个 X。

我的问题是,如果我通过保留单词和计数的 map 在 map 作业本身中进行添加,会怎样?然后迭代 map ,并将计数放入输出中。它会对 map 减少工作产生影响吗?输出仍然是一样的;但是,这样做会不会更有效率,因为用于 shuffle、sort 和 reducer 操作的条目会更少?

我在 map 作业中做加法的想法是否正确?

最佳答案

是的,您应该使 map 输出尽可能小。进行初步计数将减少通过系统移动的数据量。请注意,您仍然需要一个 reduce 作业来添加每个单词的计数,您的输入可以在 Y 处拆分,因此两个“X”单词将转到不同的映射器。

此外,您可以为 MapReduce 作业做的另一件高效的事情是使用 Combiners .这些是在映射步骤完成后立即在映射器节点上执行的减少步骤。因此,您可以进一步减少 Map 作业的输出。

关于hadoop - 关于此 map 的澄清减少字数示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309443/

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