gpt4 book ai didi

java - 你能逐步解释单词计数mapreduce程序吗

转载 作者:行者123 更新时间:2023-12-02 22:09:27 25 4
gpt4 key购买 nike

您能解释一下任何 map 简化程序吗?例如,在单词计数程序类中,类是innerclass。您可以逐步解释该程序吗?尖括号是什么意思。为什么我们还要编写输出参数。什么是上下文对象。这样,您可以逐步解释程序。我知道逻辑,但我听不懂一些Java语句

public class WordCount {

public static class Map extends 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, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}
}
}

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

public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
context.write(key, new IntWritable(sum));
}
}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();

Job job = new Job(conf, "wordcount");

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);

job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));

job.waitForCompletion(true);
}

}

最佳答案

您的Map类扩展了Hadoop的Mapper类,其中提到了输入和输出参数的泛型。
前两个参数是输入键值,而后两个参数是输出键值。
Mapper类需要重写map()方法。您的映射器逻辑在这里。
此方法接受指定的Input参数并返回void,并将“键值对”写入Context(内存)。

您的Reduce类扩展了Reducer类。 Reducer的输入应与Mapper / Combiner的输出键值匹配。
Reducer类需要重写reduce()方法。您的 reducer 逻辑在这里。
此方法接受指定的Input参数并返回void,并从Context(内存)中读取键/值对。

Hadoop在这两种方法之间执行组合器,排序,混洗操作。

您的主要方法包含代码设置Hadoop作业。

很少有更多的澄清。
macalester.edu
javacodegeeks

关于java - 你能逐步解释单词计数mapreduce程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30749643/

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