Map类

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;
 
/*
*LongWritable 偏移量 long,表示改行在文件中的位置,而不是行号
* Text map阶段的输入数据 一行文本信息 字符串类型 String
* Text map阶段的数据字符串类型String
* IntWritable map阶段输出的values类型,对应Java中int型,表示行号
* */
 
public class WordCountMap extends Mapper<LongWritable,Text, Text, IntWritable> {
    @Override
    protected void map(LongWritable key,Text value,Context context) throws IOException, InternalError, InterruptedException {
        //读取每行文本
        String line = value.toString();
        //splite拆分每行
        String[] words = line.split(" ");
        //取出每个单词
        for(String word :words){
            //将单词转为Text类型
            Text wordText = new Text(word);
            //将1转变为IntWritable
            IntWritable outValues = new IntWritable(1);
            //写出单词,跟对应1
            context.write(wordText,outValues);
        }
    }
}

Reduce类

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

连接实践类

import java.io.IOException;
import java.util.*;
 
import org.apache.hadoop.examples.SecondarySort;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
 
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.setOutputKeyClass(Text.class);
//        指定map阶段输出的values类型
        job.setOutputValueClass(IntWritable.class);
//        map阶段的输出文件
        FileInputFormat.setInputPaths(job,new Path("C:/Users/夕七/Desktop/123.txt"));
 
//         指定Reduce的类
        job.setReducerClass(SecondarySort.Reduce.class);
    //        指定reduce阶段输出的key类型
        job.setOutputKeyClass(Text.class);
//        指定reduce阶段输出的values类型
        job.setOutputValueClass(IntWritable.class);
//        指定Reduce阶段输出文件
        FileOutputFormat.setOutputPath(job,new Path("C:/Users/夕七/Desktop/234.txt"));
 
        job.waitForCompletion(true);
    }
}

MapReduce——赵俊杰相关推荐

  1. hbase周学习——赵俊杰

    事务,触发器,储存过程 1.MySQL事务 MySQL事务处理的两种方法 1.用GEGIN,ROLLBACK,COMMIT实现 BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务 ...

  2. SQL基础语法_赵俊杰

    一.建库建表语法,字段数据类型 1.建库 CHRATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARSET utf8; use 库名: IF NOT EXISTS:当表 ...

  3. 数据库复习----赵俊杰

    三个数据类型: 字符串:varchar,char 日期:data,time 数值:int,float,double 增删改查: 增:insert into aaa(name,age)values(&q ...

  4. python四种统计图————赵俊杰

    线形图 import matplotlib.pyplot as mpl import numpy as np   #定义数据 ypoints=np.array([1,3,9,25,12,32,5,1] ...

  5. python爬虫周学习___赵俊杰

    Scrapy安装与使用 打开命令提示符下载安装Scrapy所必须的环境: 优先下载python下载更新文件:python -m pip install --upgrade pip 然后下载: pip ...

  6. 周学习总结----shell_赵俊杰

    代码规范 #!/bin/bash 指定告知系统当前这个脚本要使用shell解释器 文件命名规范:文件名.sh 使用流程: 1.创建一个文件,进入编辑 #vim aaa.sh 2.使用i进入开始编辑 # ...

  7. Linux指令——赵俊杰

    基础指令 一.ls指令 用法1:#ls 含义:列出当前工作目录下的所有文件/文件夹的名称 用法2:#ls 路径 含义:列出指定路径下的所有文件/文件夹的名称 用法3:#ls 选项 路径 含义:在列出指 ...

  8. sql学习周总结——赵俊杰

    1.索引:一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中 ...

  9. 爬虫周学习总结__赵俊杰

    爬贴吧 from urllib import request import re#定义url page=100 url='http://tieba.baidu.com/f?kw=%E6%AE%B5%E ...

最新文章

  1. 太任性!17 岁少年买不到回国机票,因“泄愤”攻击航司系统,被判刑 4 年
  2. pip install Read timed out 超时问题解决
  3. [JavaWeb基础] 018.Struts2 Action通配符使用
  4. SpringBoot(2)之自定义配置
  5. Linux_ACL_su
  6. Windows Azure VM Role (2) 创建VHDVHD
  7. 期货品种产业链图表_农业
  8. windows 内核进程的优先级_华为鸿蒙 OS 轻量内核设计理念与关键特性
  9. 2008流媒体服务器点播搭建详解
  10. 三轴传感器、六轴传感器、九轴传感器的文章解读
  11. MyBatis中foreach传入参数为Poji装饰类,list、数组的不同写法
  12. Importing the numpy c-extensions failed 解决方案
  13. Mint20系统安装微信
  14. 1-5(中文版)听力积累
  15. 求最大公约数和最小公倍数的多种方法
  16. matlab 工具箱 径向基,径向基(matlab工具箱)
  17. python api接口10060_Python请求错误10060
  18. 计算机科学数电吗,“不插电的计算机科学”, 你试过吗?
  19. 用matlab作地震波vsp图,利用VSP提高叠后地面地震资料分辨率
  20. 自动控制原理(4) - 时域分析

热门文章

  1. [附源码]java毕业设计教师教学评价系统
  2. Alian解读SpringBoot 2.6.0 源码(五):启动流程分析之打印Banner
  3. 超详细讲解实现拓扑排序、关键路径
  4. 国际钢铁行业初步分析
  5. JAVA集合取交集工具类_集合交集、差集工具类
  6. java+birt+实例_BIRT简单实例
  7. laravel 只要通过路由去请求数据库就会有延迟
  8. c++课设:高校人员信息管理系统 开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。
  9. uni-app开发之调用android手机应用信息设置
  10. android 标题导航栏,NavigationBar