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。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。