为什么spark sql在最后的serval任务中变得如此慢,甚至是普通的表扫描?

时间:2018-04-10 13:42:02

标签: apache-spark apache-spark-sql spark-dataframe

env:jdk1.8 with spark 2.3.0& hadoop 2.8.0

查询:

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

这样的查询的物理计划应该像项目< ---- filter< ---- HiveTableScan(predicate = foo),一个非常简单的

和数据帧调用:

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

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

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

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我是如何解决问题的:

使用较少的执行者然后运行正常。

conf导致问题:--num-executors 512(群集的资源远远不够)

更改为128解决了问题。

仍然不知道原因,欢迎解释。