mapreduce统计单词个数

WordCount类代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
    public static void main(String[] args) throws Exception {
        //定义配置对象
        Configuration conf = new Configuration();
        //定义一个工作对象
        Job job = Job.getInstance(conf);

        //获取map的一个对象
        job.setMapperClass(WordCountMap.class);
        //指定map阶段的一个输出key
        job.setMapOutputKeyClass(Text.class);
        //指定map阶段输出的values类型
        job.setMapOutputValueClass(IntWritable.class);
        //指定map阶段的输入文件
        FileInputFormat.setInputPaths(job,new Path("D:\\代码\\大二下\\Hadoop\\4、MapReduce_Reduce\\123.txt"));

        //获取reduce的类
        job.setReducerClass(WordCountReduce.class);
        //指定reduce阶段的一个输出的key
        job.setOutputKeyClass(Text.class);
        //指定reduce阶段输出的values类型
        job.setOutputValueClass(IntWritable.class);
        //指定reduce阶段的输出文件
        FileOutputFormat.setOutputPath(job,new Path("D:\\代码\\大二下\\Hadoop\\4、MapReduce_Reduce\\456.txt"));

        job.waitForCompletion(true);
    }
}

WordMap类代码:

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 WordCountMap extends Mapper {
    @Override
    protected void map(LongWritable key, Text value,Context context) throws IOException, InterruptedException {
        //读取每行文本
        String line = value.toString();
        //splite拆分每行
        String[] words = line.split(" ");
        //取出每个单词
        for (String word:
             words) {
            //将单词转为Text类型
            Text wordText = new Text(word);
            //将1转变成IntWritable
            IntWritable outValue = new IntWritable(1);
            //写出每个单词,跟对应1
            context.write(wordText, outValue);
        }
    }
}

WordReduce类代码:

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

import java.io.IOException;
/*
*   Text          输入的字符串类型,序列化
*   IntWritable   输入一串1,序列化
*   Text          输出的字符串类型,序列化
*   IntWritable   输出的求和数组,序列化
* */
public class WordCountReduce extends Reducer {
    /*
     * key      输入单词名字
     * values   输入一串1
     * context  输出的工具
     * */
    @Override
    protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
        int sum=0;
        for(IntWritable number:values){
            sum += number.get();

        }
        context.write(key,new IntWritable(sum));
    }
}

Original: https://www.cnblogs.com/komorebiZjh/p/16247133.html
Author: 搁浅的小鲸鱼
Title: mapreduce统计单词个数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599216/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux 目录挂载服务

    Linux 服务器挂载文件目录通常有三种形式,手动挂载、自动挂载、Autofs 自动挂载,下面对这三个挂载做一下介绍,接受一下这三个区别以及使用场景: 准备服务器和客户端: ser…

    数据库 2023年6月14日
    0105
  • Vue插件

    Vue插件 插件作用 插件通常用来为 Vue 添加全局功能 例如:1、添加全局资源:指令/过滤器/过渡等。如 vue-touch2、通过全局混入来添加一些组件选项。3、添加 Vue…

    数据库 2023年6月11日
    075
  • 04-MySQL锁

    数据库锁 1、SQL语言包括那几个部分 SQL语言包括 数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据查询(DQL)四个部分 2、每部分都有哪些操作关键词 数据定…

    数据库 2023年6月16日
    084
  • 开源之夏 2022 重磅来袭,欢迎报名 RadonDB 社区项目

    “开源之夏(英文简称 OSPP)” 是中科院软件所 “开源软件供应链点亮计划” 指导下的一项面向高校学生的暑期活动,由中国科学院软件…

    数据库 2023年5月24日
    0100
  • MySQL函数1(单行函数)

    单行函数 函数的理解 分类 数值函数 基本函数 PI()无参数 CETL \ CETLING()天花板函数(取比自己大的相邻的数) FLOOR()地板函数(取比自己小的相邻的数) …

    数据库 2023年5月24日
    0100
  • GROUP BY 后获取每一组最新的一条记录

    最近有一种需求,一张订单可能有多个支付单,这就要求我们拿到每一张订单的最新支付单。具体思路如下: [En] Recently, there is a demand that the…

    数据库 2023年5月24日
    071
  • SQL与数据库编程学习笔记——day3

    SQL与数据库编程学习笔记-day3 增加语句; 利用insert into语句进行增加数据库数据; 格式: insert into 表名 (字段名) values (数值);ps…

    数据库 2023年6月9日
    0130
  • String 对象

    String对象及底层区别 String 对象 两种方式 方式一:直接使用双引号得到字符串对象 代码: //方式一:直接使用双引号得到字符串对象 String name = &qu…

    数据库 2023年6月16日
    082
  • Background process terminated with code 1.

    使用vscode过程中,刷新maven依赖过程中,出现了如下错误信息: Background process terminated with code 1. 图1. maven插件…

    数据库 2023年6月14日
    076
  • 23种设计模式之访问者模式(Visitor Pattern)

    文章目录 概述 访问者模式的优缺点 访问者模式的使用场景 访问者模式的结构和实现 * 模式结构 模式实现 总结 概述 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可…

    数据库 2023年6月6日
    091
  • ElasticSearch的简单api介绍

    1:ElasticSearch是什么? Elasticsearch 是一个分布式的免费开源搜索和分析引擎 适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据…

    数据库 2023年6月6日
    082
  • Stack

    供自己巩固集合知识时写的笔记,不会对所有的内容都介绍栈(Stack)是一种后进先出(LIFO:Last In First Out)的数据结构 Stack只有入栈和出栈的操作: 把元…

    数据库 2023年6月9日
    080
  • 自然对数

    https://zhuanlan.zhihu.com/p/71928040自然对数 https://www.youtube.com/watch?v=mZE0RmCbDe8 本文来自…

    数据库 2023年6月11日
    0114
  • java单链表基本操作

    /** * */ package cn.com.wwh; /** * @Description:TODO * @author:wwh * @time:2021-1-18 19:24…

    数据库 2023年6月14日
    072
  • [javaweb]重点总结大全

    javaweb web:网页静态web:html,css 数据不会发生变化动态web:servlet/jsp,asp,php每个人在不同的时间看到数据都不同 web应用程序编写完毕…

    数据库 2023年6月16日
    081
  • [LeetCode]26. 删除排序数组中的重复项

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额…

    数据库 2023年6月9日
    0123
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球