【发布时间】:2019-03-04 09:36:09
【问题描述】:
Spark 版本:2.3 hadoop dist:天蓝色 Hdinsight 2.6.5 平台:天蓝色 存储:BLOB
集群中的节点:6 执行器实例:6 每个执行器的核心数:3 每个执行程序的内存:8gb
尝试通过同一存储帐户上的 spark 数据帧将 azure blob (wasb) 中的 csv 文件(大小 4.5g - 280 col , 2800 万行)加载为 parquet 格式。我已将文件重新分区为不同大小,即 20、40、60、100,但面临一个奇怪的问题,即处理非常小的记录子集 (
问题:
1) 这 2 个执行程序正在处理的分区具有最少的记录要处理(小于 1%),但需要将近一个小时才能完成。这是什么原因。这是否与数据倾斜场景相反?
2) 运行这些执行程序的节点上的本地缓存文件夹已被填满 (50-60GB)。不确定这背后的原因。
3) 增加分区确实会使总执行时间减少到 40 分钟,但想知道仅使用这 2 个执行器的低通过率背后的原因。
Spark 的新手,因此期待一些指针来调整此工作负载。附加来自 Spark WebUi 的附加信息。
【问题讨论】:
标签: performance apache-spark apache-spark-sql parquet apache-spark-2.0