大数据全系列 教程
1869个小节阅读:465.9k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
分析writeNewSplits(job, jobSubmitDir)方法,研究切片计算的细节。
xxxxxxxxxx
private <T extends InputSplit>
int writeNewSplits(JobContext job, Path jobSubmitDir) throws IOException,
InterruptedException, ClassNotFoundException {
Configuration conf = job.getConfiguration();
//确定InputFormat类使用是? 通过这个类就可以知道如何截取的切片
InputFormat<?, ?> input =
ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
//切片的计算逻辑
List<InputSplit> splits = input.getSplits(job);
//array数组中保存是InputSplit对象,也就是切片对象
T[] array = (T[]) splits.toArray(new InputSplit[splits.size()]);
// sort the splits into order based on size, so that the biggest
// go first 对数组中的切片对象进行排序
Arrays.sort(array, new SplitComparator());
//向指定的目录下写切片信息 job.split和job.splitmetainfo
JobSplitWriter.createSplitFiles(jobSubmitDir, conf,
jobSubmitDir.getFileSystem(conf), array);
//array数组的长度就是切片的数量(MapTask的数量)
return array.length;
}