Combine的使用案例
CombineTextInputFormat的使用案例
将输入的大量小文件合并成一个切片统一处理。
文章目录
- 1.需求:
- 2.实现过程:
- 3.代码实现:
- 3.1创建Mapper类:
- 3.2创建Reduce类
- 3.3创建Driver类
- 4.查看结果
1.需求:
准备4个小文件,期望一个切片处理4个文件
2.实现过程:
(1)不做任何处理,运行WordCount案例程序,观察切片个数为4
number of splits:4(2)在 WordcountDriver 中增加如下代码,运行程序,并观察运行的切片个数为 3// 如果不设置 InputFormat,它默认用的是 TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);//虚拟存储切片最大值设置 4mCombineTextInputFormat.setMaxInputSplitSize(job, 4194304);(3)在WordcounyDriver中增加如下代码,运行程序,并观察切片的个数为1// 如果不设置 InputFormat,它默认用的是 TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);//虚拟存储切片最大值设置 20mCombineTextInputFormat.setMaxInputSplitSize(job, 20971520);
3.代码实现:
3.1创建Mapper类:
package com.yingzi.mapreduce.combineText;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;/*** @author 影子* @create 2022-01-13-14:41**/
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{Text k = new Text();IntWritable v = new IntWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 1 获取一行String line = value.toString();// 2 切割String[] words = line.split(" ");// 3 输出for (String word : words) {k.set(word);context.write(k, v);}}
}
3.2创建Reduce类
package com.yingzi.mapreduce.combineText;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/*** @author 影子* @create 2022-01-13-14:41**/
public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{int sum;IntWritable v = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {// 1 累加求和sum = 0;for (IntWritable count : values) {sum += count.get();}// 2 输出v.set(sum);context.write(key,v);}
}
3.3创建Driver类
package com.yingzi.mapreduce.combineText;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.CombineTextInputFormat;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;/*** @author 影子* @create 2022-01-13-14:41**/
public class WordCountDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 1 获取配置信息以及获取job对象Configuration conf = new Configuration();Job job = Job.getInstance(conf);// 2 关联本Driver程序的jarjob.setJarByClass(WordCountDriver.class);// 3 关联Mapper和Reducer的jarjob.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);// 4 设置Mapper输出的kv类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5 设置最终输出kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 如果不设置InputFormat,它默认用的是TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);// 虚拟存储切片最大值设置 20mCombineTextInputFormat.setMaxInputSplitSize(job,20971520);// 6 设置输入和输出路径FileInputFormat.setInputPaths(job, new Path("G:\\计算机资料\\大数据开发\\尚硅谷大数据技术之Hadoop3.x\\资料\\11_input\\inputcombinetextinputformat"));FileOutputFormat.setOutputPath(job, new Path("G:\\计算机资料\\大数据开发\\尚硅谷大数据技术之Hadoop3.x\\资料\\_output\\outputCombine2"));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result ? 0 : 1);}
}
4.查看结果
Combine的使用案例相关推荐
- 大数据高效复制的处理案例分析总结
一个老客户提出这样的需求,希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理,数据表的记录大概有50多万条记录,表有100个字段左右,除了希望能够快速做好外 ...
- 应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践
本文授权转自阿里技术官方公众号(ali_tech):菜鸟供应链业务链路长.节点多.实体多,使得技术团队在建设供应链实时数仓的过程中,面临着诸多挑战,如:如何实现实时变Key统计?如何实现实时超时统计? ...
- Combiner合并案例
Combiner合并案例 需求 1. 需求说明 2. 文件 案例分析 1. 需求分析 2. 输入数据 3. 期望输出数据 4. 实施方案 (1)方案一 (2)方案二 代码实现 1. 基于wordcou ...
- 机器学习案例学习【每周一例】之 Titanic: Machine Learning from Disaster
下面一文章就总结几点关键: 1.要学会观察,尤其是输入数据的特征提取时,看各输入数据和输出的关系,用绘图看! 2.训练后,看测试数据和训练数据误差,确定是否过拟合还是欠拟合: 3.欠拟合的话,说明模 ...
- 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序...
一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象. Java序列化(java.i ...
- 【风控模型】Logistic算法构建标准信用评分卡模型python代码案例
[博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...
- DL之DeepLabv3:DeepLab v3和DeepLab v3+算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之DeepLabv3:DeepLab v3和DeepLab v3+算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 DeepLab v3和DeepLab v3+算法的简介(论文 ...
- DL之DeepLabv2:DeepLab v2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之DeepLabv2:DeepLab v2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 DeepLab v2算法的简介(论文介绍) 0.实验结果 1.DeepLab-v2 ...
- DL之YoloV2:Yolo V2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之YoloV2:Yolo V2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Yolo V2算法的简介(论文介绍) 1.YOLOV2的特点.改进.优缺点 2.实验结果 3.不 ...
最新文章
- 【python编程导论】我想和你探讨下如何去写好程序
- RepVGG:极简架构,SOTA性能,让VGG式模型再次伟大 | CVPR-2021
- JS的prototype和__proto__
- 利用MATLAB帮助求解作业中的Laplace变换和Z变换
- 手写webpack系列一:了解认识loader-utils
- python继承编程教程_Python实现通过继承覆盖方法示例
- 神策学堂“训练营+特训营”,种子学员招募中,来一起出圈呀!
- 11行代码AC——比紫书优化,例题2-3 近似计算——解题报告
- python3安装第三方库教程
- 主成分分析和因子分析十大不同点
- [mybatis]缓存_二级缓存使用细节
- Java面试知识点:集合、Set、泛型、HashSet、HashMap
- 深圳大学计算机考研复习资料百度云,深圳大学(专业学位)计算机技术研究生考试科目和考研参考书目...
- 如何将公式插入到word
- Web worker总结
- 操作系统第一章操作系统引论例题及答案
- mysql添加开机自启_【实操篇】如何设置MySQL开机自启动
- PAT 乙级1068 万绿丛中一点红(20 分)
- 数据分析-人群画像和目标群体分析
- 中国茶叶分类图(转载)
热门文章
- 捕获 PHP 致命错误 Fatal Errors
- mysql5.5主从复制总结
- Mathematica颜色系,你喜欢哪一个?
- 【A little interesting】LeetCode 437. Path Sum III
- [C++基础]队列queue中的常用函数
- Dell Alienware 13 R3 win10 安装 ubuntu 18.04 总结
- tensorflow 基础: static shape VS Dynamic shape, get_shape VS tf.shape() , reshape VS set_shape
- 删除指定目录下的所有文件与更改文件扩展名
- [Bzoj1003][ZJOI2006]物流运输(spfa+dp)
- 7号团队-团队任务5:项目总结