组织切片技术的原理(黄瓜怎么切片)

第一种切片机制——FileInputFormat1.切片的机制1.切片的机制简单地按照文件的内容长度进行切片切片大小,默认等于Block大小切片时不考虑数据集整体,而是逐个针对每一个文件单独切片…

大家好,又见面了,我是你们的朋友全栈君。

在job提交阶段我们会提交
xml文件、jar包、和切片信息,xml文件我们可以在程序中申明或写成配置文件,jar包就是我们的逻辑代码和依赖,而我们的切片信息可以由FileInputFormat和CombineTextInputFormat切片机制决定(也可以自定义切片机制)!!!

1.简介

FileInputFormat是所有基于文件的InputFormat的基类。这个基类提供了getSplits的通用性实现。FileInputFormat的子类需要覆写isSplitable方法来确保input-files不能被切分,并且被作为一个整体输入到mapper。FileInputFormat抽象类除了实现了父类InputFormat的抽象方法getSplits,还增加了一个比较重要的方法是IsSplitable,主要作用是:由于我们输入的文本文件可能是压缩文件,而压缩文件并不一定能被切分,所以判断的是压缩编码是否为SplittableCompressionCodec接口的实现,目前默认支持的可切分压缩编码为BZip2Codec,这也就是我们使用gzip等其他压缩文件进行处理的时候,map的个数等于压缩文件的个数。getSplits通过判断IsSplitable是否为true来选择对输入文件进行切分还是把文件当作一个split。

2.切片的默认机制

  1. 简单地按照文件的内容长度进行切片
  2. 切片大小,默认等于Block大小
  3. 切片时不考虑数据集整体,而是逐个针对每一个文件单独切片
    图解三:
    在这里插入图片描述

3.介绍默认切片流程

  1. 程序先找到你数据存储的目录
  2. 开始遍历处理(规划切片)目录下的每一个文件
  3. 遍历第一个文件file1.txt
	//源码流程
	1)获取文件大小:fs.sizeOf(ss.txt)
	2)计算切片大小:(computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M)
	3)开始切 第一个切片:ss.txt--0:128M
			 第二个切片:ss.txt--128:256M
			 第三个切片:ss.txt--256:320M
	//注:每次切片时,都要判断切完剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片
	4)将切片信息写到一个切片规划文件中
	5) 整个切片的核心过程在getSplit()方法中完成
	6) InputSplit只记录了切片的元数据信息,比如起始位置、长度以及所在的节点列表等。
  1. 提交切片规划文件到YARN上,YARN上的MrAppMaster就可以根据切片规划文件计算开启MapTask个数。

4.某些细节详解

1. 源码中计算切片大小的公式
Math.max(minSize, Math.min(maxSize, blockSize))

mapreduce.input.fileinputformat.split.minsize=1 默认值为1
mapreduce.input.fileinputformat.split.maxsize= Long.MAXValue 默认值Long.MAXValue
因此,默认情况下,切片大小=blocksize。

2. 改变切片大小
1)maxsize(切片最大值):参数如果调得比blockSize小,则会让切片变小,而且就等于配置的这个参数的值
2)minsize(切片最小值):参数调的比blockSize大,则可以让切片变得比blockSize还大。

5.FileInputFormat最常用的三个子类

输入格式 功能描述 键类型 值类型
TextInputFormat 每条记录是一行输入。键是LongWritable类型,存储该行在整个文件中的起始字节偏移量。值是这行的内容,不包括任何行终止符(换行符和回车符)。 行的字节偏移量(LongWritable) 行的内容(Text)
KeyValueInputFormat 每一行均为一条记录,被分隔符分割为key,value。可以通过在驱动类中设置conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR, “\t”);来设定分隔符。默认分隔符是tab(\t) 第一个定义key/value分隔符之前的所有字符(Text) 第一个定义key/value分隔符之后的所有字符(Text)
NLineInputFormat 如果使用NlineInputFormat,代表每个map进程处理的InputSplit不再按Block块去划分,而是按NlineInputFormat指定的行数N来划分。即输入文件的总行数/N=切片数,如果不整除,切片数=商+1。 行的字节偏移量(LongWritable) 行的内容(Text)
SequenceFileInputFormat Hadoop定义的高性能二进制格式 用户自定义 用户自定义

版权声明:本博客为记录本人自学感悟,转载需注明出处!
https://me.csdn.net/qq_39657909

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129283.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python图像处理实战_数字图像处理与python实现pdf下载

    python图像处理实战_数字图像处理与python实现pdf下载数学形态学是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、图像顶帽运算和图像底帽运算、骨架抽取、形态学梯度、Top-hat变换等。万字长文整理,希望对您有所帮助。该系列文章是讲解PythonOpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~

    2022年10月14日
  • 最新Eric Python IDE 安装方法Eric6_17.04.1 + PyQt5_5.8.2[通俗易懂]

    博主是一名新入Pyhton坑的技术小白,一直在寻找更适合自己的PythonIDE,语是准备尝试EricPythonIDE,但是网上找到的安装教程和当前最新版本不一样了,于是经过一番折腾,博主记录下了如何安装最新版本Eric617.04.1以及PyQt5.82。也希望通过本文能帮助到和博主一样的新手同学

  • usb转rs485测试软件,usb转rs485「建议收藏」

    usb转rs485测试软件,usb转rs485「建议收藏」usb转rs485电脑版驱动中还含有安装教程,在安装前可以先看看使用说明再安装。将USB转换线插入电脑的USB接口中,系统会提示检测到新设备并出现新硬件添加向导,选择从列表或指定位置安装,手动安装,找到刚才驱动的解压目录,让WINDOWS自动搜索更新驱动即可。usb转rs485软件功能1、支持的操作系统Windows2000/WindowsXP2、完全兼容USBV1.1和USBCDCV1….

  • 空间回归与地理加权_地理加权回归处理点数据

    空间回归与地理加权_地理加权回归处理点数据本章有数学公式……对数学过敏者慎入……前文再续,书接上一回……上一次说到,在改进全局回归的基础上,GWR终于横空出世了,从此空间分析领域终于有了自己专用的回归算法。如果说,空间统计有别于经典统计学的两大特征:空间相关性和空间异质性,莫兰指数等可以用来量化空间相关性,那么地理加权回归,就可以用来量化空间异质性。在对全局回归问题的改进中,局部回归可以说是最简单的方法,GWR继续应用了局

  • 深入理解PHP的GC(Garbage collection)问题「建议收藏」

    深入理解PHP的GC(Garbage collection)问题

  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号