头歌MapReduce词频统计答案
时间: 2024-10-10 20:07:48 浏览: 8
MapReduce是一种分布式计算模型,通常用于大规模数据集的并行处理。在使用Hadoop等基于MapReduce的框架进行词频统计时,会分为两个主要阶段:
1. **Map阶段**:在这个阶段,数据被分割成小块,并由map任务处理。每个map任务会对输入的数据进行处理,例如将文本分割成单词(key-value对),其中单词作为键(key),值(value)设为1,表示该单词出现一次。
```java
// Java伪代码示例
public void map(String line, OutputCollector<String, Integer> output) {
String[] words = line.split(" ");
for (String word : words) {
output.collect(word, 1);
}
}
```
2. **Reduce阶段**:map任务完成后,所有相同的键会被收集到reduce任务中。reduce任务接收来自所有映射任务的键和它们对应的值(在这里是一次次出现的计数),然后对这些值进行累加,得到每个单词的实际频率。
```java
public class WordCountReducer extends Reducer<String, Integer, String, Integer> {
public void reduce(String key, Iterable<Integer> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (Integer val : values) {
sum += val;
}
context.write(key, sum);
}
}
```