Hadoop大数据——MR程序map任务数的规划机制
2023-09-14 09:02:04 时间
一个inputsplit对应一个map
而inputsplit切片规划是由InputFormat的具体实现子类来实现,就是调用
InputSplits[ ] getSplits() 方法,这个方法的逻辑可以自定义
在默认情况下,由FileInputFormat来实现,它的核心逻辑:
规划切片的大小
long minSize = Math.max(getFormatMinSplitSize(), getMinSplitSize(job));
long maxSize = getMaxSplitSize(job);
public static long getMaxSplitSize(JobContext context) {
returncontext.getConfiguration().getLong(SPLIT_MAXSIZE, Long.MAX_VALUE);
}
// mapreduce.input.fileinputformat.split.minsize 配置这个值可以让切片大小>块大小
// mapreduce.input.fileinputformat.split.maxsize 配置这个值可以让切片大小<块大小
long splitSize = computeSplitSize(blockSize, minSize, maxSize);
//计算切片大小
protected long computeSplitSize(long blockSize, long minSize,long maxSize) {
return Math.max(minSize, Math.min(maxSize, blockSize));
}
(2)构造切片信息对象,并放入InputSplits[ ]中
splits.add(makeSplit(path,length-bytesRemaining,splitSize,blkLocations[blkIndex].getHosts()));
注:FileInputFormat的切片机制是针对一个一个的文件进行,因此,如果文件太小,则整个文件划分为一个切片
如果一个大文件被切成若干个切片后,剩下的长度如果在blocksize的1.1倍大小以内,则将剩下的长度全部规划为一个切片
相关文章
- c++中map遍历_怎么遍历map集合
- java map 转string_java-将Map <String,Object>转换为Map <String,String>
- java map转json字符_Map转JSON字符串
- java map 二维数组_Java二维数组实现简单Map
- Map集合转换成实体类对象,实体类对象转换为map集合,互转工具类「建议收藏」
- 深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
- Gson将map转换成JsonObject出现null值
- 【Java集合框架】篇五:Map接口
- 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
- 【C++】用一棵红黑树同时封装出map和set
- ORA-47061: Identity map for Identity string.string, Factor Link string, string not found for operation string on string ORACLE 报错 故障修复 远程处理
- Hadoop学习:Map/Reduce初探与小Demo实现详解大数据
- Python使用map,reduce高阶函数模拟实现Spark的reduceByKey算子功能详解编程语言
- Map的有序和无序实现类,与Map的排序详解编程语言
- C++ unordered_map初始化详解
- 使用Linux Map遍历文件及目录结构(linuxmap遍历)
- 使用Redis轻松操作Map数据结构(redis操作map)
- Redis有序Map:高效有序排列的利器(redis有序map)
- Oracle应用Map参数的优势初探(map参数 oracle)
- 查询Redis中Map的广泛应用(查询redis的map)
- 警惕Redis Map的频繁变更(redis频繁修改map)
- 使用Redis进行Map设置(redis设置map)