为什么Spark SQL在最后的薮猫任务中变得如此缓慢,即使是普通的表扫描?



env: jdk1.8 with Spark 2.3.0 & Hadoop 2.8.0

查询:

select cast(uid as int) from HiveTable where partition=foo

这种查询的物理计划应该类似于 HiveTableScan(谓词 = foo) <---- Project <---- 过滤器,一个非常简单的计划

和数据帧调用:

df.write.option("delimiter","t").csv(HdfsPath)

分区文件夹包含很多LZO文件,文件大小基本相同,所以我期望每个任务都需要一些时间,并且进展稳定而顺利。

但是当到达终点时,它变得越来越慢,看起来很像经典的Data Skew正在发生。我真的不知道发生了什么以及如何更深入地调查。

任何建议不胜感激。

我是如何解决这个问题的:

使用更少的执行器,然后它运行良好。

已知原因问题:--num-executors 512(群集的资源远远绰绰有余)

更改为 128 解决了问题。

仍然不知道为什么,欢迎解释。

相关内容

最新更新