MapReduce入门案例WordCount(动画演示)

本文详细介绍了如何使用Hadoop MapReduce实现WordCount程序,包括自定义代码流程、Map实现、Reduce实现及Driver实现。通过具体步骤和代码示例,帮助读者理解MapReduce的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义代码流程

WordCount-Map实现
  • 1、实例一个class 继承Mapper<输入的key的数据类型,输入的value的数据类型,输出的key的数据类型,输出的value的数据类型
  • 2、重写map方法 map(LongWritable key, Text value, Context context)
    key: 行首字母的偏移量
    value: 一行数据
    context:上下文对象
  • 3、根据业务需求进行切分,然后逐一输出
WordCount-Reduce实现
  • 1、实例一个class 继承Reducer<输入的key的数据类型,输入的value的数据类型,输出的key的数据类型,输出的value的数据类型
  • 2、重写reduce方法 reduce(Text key, Iterable values, Context context)
    key: 去重后单词
    values: 标记的1(好多个1,key出现几次就有几个1)
    context:上下文对象
  • 3、遍历values 进行汇总计算
WordCount-Driver实现

1、实例一个class 继承Configured 实现Tool
2、重写run方法
3、在run方法中将自己编写的map和reduce添加到集群

package com.czxy.hadoop.mapReduce.demo02;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocalFileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

/**
 * @author 550894211@qq.com
 * @version v 1.0
 * @date 2019/11/16
 */
public class PosCountDriver extends Configured implements Tool {
    public static void main(String[] args) throws Exception {
        ToolRunner.run(new PosCountDriver(), args);
    }

    @Override
    public int run(String[] args) throws Exception {
        //判断目录是否存在  存在则删除
        Path outPath = new Path("posCount");
        LocalFileSystem local = FileSystem.getLocal(new Configuration());
        if (local.exists(outPath)) {
            local.delete(outPath, true);
        }
        //1.获取job实例
        Job job = Job.getInstance(new Configuration(), "posCount");
        //2.注册主类
        job.setJarByClass(PosCountDriver.class);
        //3.设置输入
        job.setInputFormatClass(TextInputFormat.class);
        TextInputFormat.setInputPaths(job, new Path("C:\\Users\\27727\\Desktop\\学习文件夹\\03.课后作业\\03.MapReduce\\运营商题目\\数据"));
        //4.设置mapper
        job.setMapperClass(PosCountMapper.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        //5.设置reduce
        job.setReducerClass(PosCountReduce.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(NullWritable.class);
        //6.设置输出
        job.setOutputFormatClass(TextOutputFormat.class);
        TextOutputFormat.setOutputPath(job, outPath);
        //7.开启作业
        boolean result = job.waitForCompletion(true);
        return result ? 0 :1;
    }
}

动画:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值