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的使用案例相关推荐

  1. 大数据高效复制的处理案例分析总结

    一个老客户提出这样的需求,希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理,数据表的记录大概有50多万条记录,表有100个字段左右,除了希望能够快速做好外 ...

  2. 应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

    本文授权转自阿里技术官方公众号(ali_tech):菜鸟供应链业务链路长.节点多.实体多,使得技术团队在建设供应链实时数仓的过程中,面临着诸多挑战,如:如何实现实时变Key统计?如何实现实时超时统计? ...

  3. Combiner合并案例

    Combiner合并案例 需求 1. 需求说明 2. 文件 案例分析 1. 需求分析 2. 输入数据 3. 期望输出数据 4. 实施方案 (1)方案一 (2)方案二 代码实现 1. 基于wordcou ...

  4. 机器学习案例学习【每周一例】之 Titanic: Machine Learning from Disaster

     下面一文章就总结几点关键: 1.要学会观察,尤其是输入数据的特征提取时,看各输入数据和输出的关系,用绘图看! 2.训练后,看测试数据和训练数据误差,确定是否过拟合还是欠拟合: 3.欠拟合的话,说明模 ...

  5. 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序...

    一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象. Java序列化(java.i ...

  6. 【风控模型】Logistic算法构建标准信用评分卡模型python代码案例

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  7. DL之DeepLabv3:DeepLab v3和DeepLab v3+算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DeepLabv3:DeepLab v3和DeepLab v3+算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 DeepLab v3和DeepLab v3+算法的简介(论文 ...

  8. DL之DeepLabv2:DeepLab v2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DeepLabv2:DeepLab v2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 DeepLab v2算法的简介(论文介绍) 0.实验结果 1.DeepLab-v2 ...

  9. DL之YoloV2:Yolo V2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之YoloV2:Yolo V2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Yolo V2算法的简介(论文介绍) 1.YOLOV2的特点.改进.优缺点 2.实验结果 3.不 ...

最新文章

  1. 【python编程导论】我想和你探讨下如何去写好程序
  2. RepVGG:极简架构,SOTA性能,让VGG式模型再次伟大 | CVPR-2021
  3. JS的prototype和__proto__
  4. 利用MATLAB帮助求解作业中的Laplace变换和Z变换
  5. 手写webpack系列一:了解认识loader-utils
  6. python继承编程教程_Python实现通过继承覆盖方法示例
  7. 神策学堂“训练营+特训营”,种子学员招募中,来一起出圈呀!
  8. 11行代码AC——比紫书优化,例题2-3 近似计算——解题报告
  9. python3安装第三方库教程
  10. 主成分分析和因子分析十大不同点
  11. [mybatis]缓存_二级缓存使用细节
  12. Java面试知识点:集合、Set、泛型、HashSet、HashMap
  13. 深圳大学计算机考研复习资料百度云,深圳大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  14. 如何将公式插入到word
  15. Web worker总结
  16. 操作系统第一章操作系统引论例题及答案
  17. mysql添加开机自启_【实操篇】如何设置MySQL开机自启动
  18. PAT 乙级1068 万绿丛中一点红(20 分)
  19. 数据分析-人群画像和目标群体分析
  20. 中国茶叶分类图(转载)

热门文章

  1. 捕获 PHP 致命错误 Fatal Errors
  2. mysql5.5主从复制总结
  3. Mathematica颜色系,你喜欢哪一个?
  4. 【A little interesting】LeetCode 437. Path Sum III
  5. [C++基础]队列queue中的常用函数
  6. Dell Alienware 13 R3 win10 安装 ubuntu 18.04 总结
  7. tensorflow 基础: static shape VS Dynamic shape, get_shape VS tf.shape() , reshape VS set_shape
  8. 删除指定目录下的所有文件与更改文件扩展名
  9. [Bzoj1003][ZJOI2006]物流运输(spfa+dp)
  10. 7号团队-团队任务5:项目总结