hadoop第二天——5. MapReduce编程规范及示例编写

本文介绍了MapReduce的编程规范,包括Mapper和Reducer类的继承,以及MapReduce程序的运行模式,如本地模式和集群模式。通过一个实例展示了如何统计文本中单词的总数,并提供了运行和查看结果的方法。
摘要由CSDN通过智能技术生成

五、MapReduce编程规范及事例编写

1. 编程规范

  • 从开发层面来看
    类1继承Mapper
    类2继承reducer
    主程序入口main
    把上述三个类打成jar包就构成了MapReduce程序。
  • 从运行层面看
    MRAppMaster:程序内部的管理者,负责内部的调度协调
    MapTask:就是map阶段运行的任务,所对应代码层面就是上述类1
    ReduceTask:就是reduce阶段运行的任务,所对应代码层面就是上述类2

2. 示例
需求:在一堆给定的文本文件中统计输出每一个单词出现的总次数

Mapper类

package site.zhansiyu.mrtest;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * todo 该类就是mr程序map阶段调用的类 也就是maptask运行的类
 * 
 * KEYIN:表示map阶段输入数据kv中key类型 在默认机制下 是每行的起始偏移量 long
 * VALUEIN: 表示map阶段输入数据kv中value类型 在默认机制下 是每行的内容  String
 * 
 * KEYOUT:表示map阶段输出数据kv中key类型 在本业务中输出的是单词 String
 * VALUEOUT:表示map阶段输出数据kv中value类型 在本业务中输出的是单词的次数1  long
 * 
 * mapreduce默认读取数据机制  TextInputFormat 默认读数据类  一行一行读取数据
 * k:是每行起始的偏移量位置 v就是这一行的内容
 * 
 * Long String 是java数据类型 hadoop认为其在序列化的时候 效率低
 * 因此自己封装了一套数据类型 并且开发了自己的序列化机制  Writable
 * long------->longWritable
 * String----->Text
 * int-------->IntWritable
 * null------->nullWritable
 */

public class WordCountMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
   
    /**
     * map方法就是map阶段具体业务逻辑实现的地方
     * 该方法的调用和读取数据的机制有关: 读取一行数据调用一次map方法
     */
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
        // 把输入的一行数据转为String
        String line = value.toString();
        // 按照分隔符进行切割 空格
        String
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值