Inceptor sql 的 task 数量
概要描述
inceptor sql 提交后的 task 数目会影响性能,本文简单介绍一下决定一个 sql 对应的 task 数目的几个因素;
详细说明
主要分为 map 阶段 和 reduce 阶段来介绍
map 阶段 task 数量
1、text 表
取决于 text 表数据在 hdfs 上的文件数量;当单个文件大于 HDFS 默认配置的 blocksize 为 128M 时会自动切分。
2、分桶不分区
一般,task 数目为分桶数
3、分桶且分区
如果没有分区过滤,则 task 数目为 分区数 * 桶数
如果有分区过滤,则 task 数目为 过滤后的分区数 * 桶数
Reduce 阶段 task数目
reduce task 数目是由 map task 数目和 operator 类型决定的。
1、group by
reduce task 数目为 map task 数 * 0.6
2、join 操作
reduce task 数目为 map task 数 * 1
手动控制 task 数目
reduce task 数可以通过下面参数设置:
mapred.reduce.tasks //设置 reduce 个数
mapred.minreduce.tasks //设置最小 reduce个数
另外,主要的 operator 对应的系数是可以调整的,不过不建议随便调整。
注意:对分桶表插入,如果 mapred.reduce.tasks 跟桶数不一致,结果可能有问题,所以分桶表插入时,不要设置 mapred.reduce.tasks。
阅读剩余
版权声明:
作者:admin
链接:https://9923456.xyz/340.html
文章版权归作者所有,未经允许请勿转载。
THE END