WordCount案例及MapReduce运行的三种方式

目录

一、MapReduce案例准备

二、运行方式一:本地执行

三、运行方式二:打jar包,集群执行

四、运行方式三:以idea为入口,集群执行

 

一、MapReduce案例准备

在Idea中创建一个MapReduce工程,对指定目录下文件的单词个数进行统计。MapReduce框架在使用时,需要编写三个类:CountDriver,CountMapper,CountReducer。其中CountDriver为最终的执行类;CountMapper继承Mapper类,重写map方法,实现Map阶段的计算逻辑;CountReducer类继承Reducer类,重写reduce方法,实现reduce阶段的计算逻辑。

使用maven工具,创建新的maven工程,在其main目录下创建以上3个类。实现代码如下

1、CountMapper类

package com.blog.wordcount;

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

import java.io.IOException;

public class CountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {
    private Text outKey = new Text();
    private IntWritable outValue = new IntWritable(1);

    /**
     * @param key
     * @param value
     * @param context
     * @throws IOException
     * @throws InterruptedException
     */
    @Override
    protected void map(LongWritable key, Text value, Context context) 
    throws IOException, InterruptedException {
        //将文档的一行数据转化成java的String类,
        String line = value.toString();
        //以空格分隔字符串
        String[] words = line.split(" ");
        //遍历字符串数组,获得单词
        for (String word : words) {
            //java字符转化为Text类型
            outKey.set(word);
            //以<K,V>写出
            context.write(outKey,outValue);
        }
    }
}

2、CountReducer类

package com.blog.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class CountReducer extends Reducer<Text, IntWritable,Text,IntWritab
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值