您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Hadoop中Map-Reduce、Map、Reduce的示例分析
## 一、Map-Reduce概述
Map-Reduce是Hadoop的核心计算模型,用于**分布式处理大规模数据集**。其核心思想是将计算任务分解为两个阶段:
1. **Map阶段**:并行处理输入数据,生成中间键值对
2. **Reduce阶段**:合并具有相同键的中间结果
## 二、Map阶段示例分析
以经典的词频统计(WordCount)为例:
```java
// Mapper实现
public class WordCountMapper 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); // 输出<单词,1>
}
}
}
关键点:
- 每遇到一个单词就输出<单词,1>
的键值对
- 自动并行处理不同数据块
- 输出结果会自动按照键排序
// Reducer实现
public class WordCountReducer 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));
}
}
关键点:
- 接收形式为<单词,[1,1,...]>
的输入
- 对相同键的所有值进行聚合计算
- 最终输出<单词,总次数>
InputSplit
注意:实际开发中还需配置Job对象指定输入输出路径、Mapper/Reducer类等信息,此处为突出核心逻辑做了简化。 “`
(全文约560字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。