一、解析步骤

进入writeSplits()方法
1. writeNewSplits -> 新API切片

进入writeNewSplits()方法
2. input -> InputFormat实例

3. InputFormat -> 输入格式的父类
进入InputFormat 类中

关闭InputFormat 类中
4. getSplits() -> 获取切片信息
进入getSplits()方法


5. isSplitable() -> 判断是否可被切分
进入isSplitable()方法

退出isSplitable()方法
6. 获取切片大小

7. computeSplitSize() -> 计算切片大小
进入computeSplitSize()方法

退出computeSplitSize()方法
8. bytesRemaining -> 文件剩余长度

9. 写入临时文件夹

10. 小结
获取切片信息 :
- 选择进入新的API
- 获取配置信息
- 生成InputFormat实例
- 调用实例的getSplits(),获取切片信息
- 写入临时文件
具体切片细节:
- 取切片最小值和最大值
- 根据job信息获取所有的输入文件
- 获取单个文件的路径和长度
- 判断文件是否要被切分(文件长度大于0)
- 判断文件你是否可以被切分(压缩编码)
- 能被切分,获取切片大小(默认为块大小)
- 通过bytesRemaining文件长度判断文件后不够块大小的1.1倍被切分成一片
- 足够切成块大小的切片,不够直接成一块
11. Life
自我控制是最强者的本能。——萧伯纳

版权声明:本文为qq_40180229原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。