MapReduce——赵俊杰
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——赵俊杰相关推荐
- hbase周学习——赵俊杰
事务,触发器,储存过程 1.MySQL事务 MySQL事务处理的两种方法 1.用GEGIN,ROLLBACK,COMMIT实现 BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务 ...
- SQL基础语法_赵俊杰
一.建库建表语法,字段数据类型 1.建库 CHRATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARSET utf8; use 库名: IF NOT EXISTS:当表 ...
- 数据库复习----赵俊杰
三个数据类型: 字符串:varchar,char 日期:data,time 数值:int,float,double 增删改查: 增:insert into aaa(name,age)values(&q ...
- python四种统计图————赵俊杰
线形图 import matplotlib.pyplot as mpl import numpy as np #定义数据 ypoints=np.array([1,3,9,25,12,32,5,1] ...
- python爬虫周学习___赵俊杰
Scrapy安装与使用 打开命令提示符下载安装Scrapy所必须的环境: 优先下载python下载更新文件:python -m pip install --upgrade pip 然后下载: pip ...
- 周学习总结----shell_赵俊杰
代码规范 #!/bin/bash 指定告知系统当前这个脚本要使用shell解释器 文件命名规范:文件名.sh 使用流程: 1.创建一个文件,进入编辑 #vim aaa.sh 2.使用i进入开始编辑 # ...
- Linux指令——赵俊杰
基础指令 一.ls指令 用法1:#ls 含义:列出当前工作目录下的所有文件/文件夹的名称 用法2:#ls 路径 含义:列出指定路径下的所有文件/文件夹的名称 用法3:#ls 选项 路径 含义:在列出指 ...
- sql学习周总结——赵俊杰
1.索引:一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中 ...
- 爬虫周学习总结__赵俊杰
爬贴吧 from urllib import request import re#定义url page=100 url='http://tieba.baidu.com/f?kw=%E6%AE%B5%E ...
最新文章
- 太任性!17 岁少年买不到回国机票,因“泄愤”攻击航司系统,被判刑 4 年
- pip install Read timed out 超时问题解决
- [JavaWeb基础] 018.Struts2 Action通配符使用
- SpringBoot(2)之自定义配置
- Linux_ACL_su
- Windows Azure VM Role (2) 创建VHDVHD
- 期货品种产业链图表_农业
- windows 内核进程的优先级_华为鸿蒙 OS 轻量内核设计理念与关键特性
- 2008流媒体服务器点播搭建详解
- 三轴传感器、六轴传感器、九轴传感器的文章解读
- MyBatis中foreach传入参数为Poji装饰类,list、数组的不同写法
- Importing the numpy c-extensions failed 解决方案
- Mint20系统安装微信
- 1-5(中文版)听力积累
- 求最大公约数和最小公倍数的多种方法
- matlab 工具箱 径向基,径向基(matlab工具箱)
- python api接口10060_Python请求错误10060
- 计算机科学数电吗,“不插电的计算机科学”, 你试过吗?
- 用matlab作地震波vsp图,利用VSP提高叠后地面地震资料分辨率
- 自动控制原理(4) - 时域分析
热门文章
- [附源码]java毕业设计教师教学评价系统
- Alian解读SpringBoot 2.6.0 源码(五):启动流程分析之打印Banner
- 超详细讲解实现拓扑排序、关键路径
- 国际钢铁行业初步分析
- JAVA集合取交集工具类_集合交集、差集工具类
- java+birt+实例_BIRT简单实例
- laravel 只要通过路由去请求数据库就会有延迟
- c++课设:高校人员信息管理系统 开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。
- uni-app开发之调用android手机应用信息设置
- android 标题导航栏,NavigationBar