所有连接表的分区数量是否会影响最大执行者



我有一个火花sql,例如

select ...
from A 
join B on A.k = B.k
join C on A.k = C.k

A具有2K分区;B有7个分区;而C不被分区。

我将最大动态执行器编号设置为50。但是,应用程序获取<20位执行人。当两个阶段并行运行时,一个阶段使用5个执行者,而另一个阶段使用6。

我是否应该增加B和C的分区数以使查询更多地并行?

肯定,由于分区不均会产生影响,它们是:较少的并发性 - 您没有使用并行的优势。可能会有理想的工人节点。数据偏向和资源利用不当。您的数据可能会偏向一个分区,因此您的一名工人可能比其他工人做更多的事情,因此资源问题可能会出现在该工人中。

由于分区计数之间存在权衡,因此它们应该以正确的数字为单位,否则任务计划可能比实际执行时间多。通常,您应该根据群集大小和数据进行100至10K分区。

下限 - 群集中可用于应用程序的核心数上限 - 任务应花费100 ms的时间才能执行。如果花费的时间少于您的分区数据太小,并且您的应用程序可能会花费更多时间来安排任务。

相关内容

  • 没有找到相关文章

最新更新