环境:
spark2.4.0
spark on yarn with 100 executors
spark.executor.memory 4g
spark.driver.memory 3g
spark.executor.cores 1
我执行一个具有七个连续左联接的sql,并使用相同的联接键,如下所示:
create table tmp.res as select * from
A a
left join B b
on a.id = b.id
left join C c
on a.id = c.id
left join D d
on a.id = d.id
...
我发现执行器之间的任务不平衡,这导致从热执行器获取某些任务失败。
我认为由于数据的局部性(相同的联接键),每个左联接都会将许多记录拖曳到同一执行程序中。
因此,我想由于相同的连接关键任务,随着每个连接的运行,偏斜变得越来越严重。最终,热执行器变得无法访问,应用程序崩溃了。
我说的对吗?
错误日志:
ERROR ShuffleBlockFetcherIterator: Failed to get block(s) from