将数据帧写入地板时,Spark Executor性能低下

时间:2018-09-28 11:33:57

标签: performance apache-spark apache-spark-sql parquet apache-spark-2.0

火花版本:2.3 hadoop dist:Azure Hdinsight 2.6.5 平台:Azure 存储:BLOB

集群中的节点:6 执行器实例:6 每个执行者的核心数:3 每个执行者的内存:8GB

尝试通过同一存储帐户上的spark数据帧将天蓝色blob(wasb)中的csv文件(大小为4.5g-280 col,280万行)加载为拼花格式。我对文件进行了重新分区,大小不同,即20、40、60、100,但是面临一个奇怪的问题,即在处理少量记录(<1%)的6个执行程序中有2个保持运行1小时左右。并最终完成。

问题:

1)这两个执行程序正在处理的分区具有最少的记录要处理(少于1%),但是要花近一个小时才能完成。这是什么原因。这与数据偏斜情况相反吗?

2)运行这些执行程序的节点上的本地缓存文件夹已被填满(50-60GB)。不知道背后的原因。

3)增加分区的确会使整个执行时间减少到40分钟,但只想知道这两个执行器执行失败的原因。

引人注目的新功能,因此期待一些指导来调整此工作负载。来自Spark WebUi的附加信息。

1 个答案:

答案 0 :(得分:0)

您正在使用哪种hadoop集群环境?

1) 回答:编写文件时您要唱partitionColumnBy吗?否则,请尝试检查。

2) 回答:增加分区数,即使用“ spark.sql.shuffle.partitions”

3) 回答:需要更具体的信息(例如样本数据等)来给出答案。