gpt4 book ai didi

java - Hadoop Text类设置方法

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

这是来自 Hadoop 的 WordCount 示例的代码示例:

class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
private Text outputKey;
private IntWritable outputVal;

@Override
public void setup(Context context) {
outputKey = new Text();
outputVal = new IntWritable(1);
}

@Override
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer stk = new StringTokenizer(value.toString());
while(stk.hasMoreTokens()) {
outputKey.set(stk.nextToken());
context.write(outputKey, outputVal);
}
}
}

只有一个outputKey实例。在 while循环,outputKey 设置不同的词写成context的key .是outputKey在整体内共享的实例 <key, value>对吗?

为什么不使用 context.write(new Text(stk.nextToken()), new IntWritable(1))

最佳答案

这只是为了提高效率。

阅读这篇文章:http://www.joeondata.com/2014/05/22/memory-management-in-hadoop-mapreduce/ .

“例如,如果您使用 org.apache.hadoop.io.Text 作为 map 输出键,您可以在 Mapper 类中创建一个 Text 对象的单个非静态最终实例。然后每个调用 map 方法时,您可以清除或仅设置单数文本实例,然后将其写入映射器的上下文。然后上下文将在再次调用您的 map 方法之前使用/复制数据,因此您不必担心覆盖框架正在使用的数据。”

关于java - Hadoop Text类设置方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411843/

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