因为任务的分配是以Task为粒度执行的,每一个Task同时只会执行在一个Executor上,是用一个vCore资源,因此如果要充分利用上CPU,就需要干预Task数量。
以如下SQL为例:
select
l_orderkey,
sum(l_extendedprice * (1 - l_discount)) as revenue,
o_orderdate,
o_shippriority
from
customer, orders, lineitem
where
c_mktsegment = 'BUILDING'
and c_custkey = o_custkey
and l_orderkey = o_orderkey
and o_orderdate < date '1995-03-15'

本文探讨了如何计算Task数量以充分利用CPU资源,特别是在数据库查询中。任务数量受读表、Join、Group By、Limit和数据插入等因素影响。例如,Join的task数由Hash Shuffle决定,limit操作会预估并裁剪task,而数据插入时,分桶表的task数等于分桶数。此外,可通过调整AutoMerge和reduce任务参数来优化Task数量。
最低0.47元/天 解锁文章
795





