Gur*_*uru 6 performance apache-spark parquet apache-spark-sql apache-spark-2.0
Spark 版本:2.3 hadoop 发行版:azure Hdinsight 2.6.5 平台:Azure 存储:BLOB
集群中的节点:6 个执行程序实例:每个执行程序 6 个核心:3 每个执行程序内存:8GB
尝试通过同一存储帐户上的 Spark 数据帧将 azure blob (wasb) 中的 csv 文件(大小 4.5g - 280 col,280 万行)加载为 parquet 格式。我已将文件重新分区为不同大小,即 20、40、60、100,但遇到一个奇怪的问题,即处理非常小的记录子集(< 1%)的 6 个执行程序中的 2 个继续运行 1 小时左右并最终完成。
问题 :
1) 这 2 个执行程序正在处理的分区需要处理的记录最少(少于 1%),但需要近一个小时才能完成。这是什么原因。这与数据倾斜场景相反吗?
2) 运行这些执行程序的节点上的本地缓存文件夹已被填满 (50-60GB)。不确定这背后的原因。
3) 增加分区确实会将整体执行时间降低到 40 分钟,但只想知道这 2 个执行器的低执行时间背后的原因。
Spark 新手,因此期待一些调整此工作负载的指导。附加来自 Spark WebUi 的附加信息。
您使用的是什么hadoop集群环境?
1)Ans:您在写入文件时是否唱partitionColumnBy?否则尝试并检查。
2)Ans:增加分区数量,即使用“spark.sql.shuffle.partitions”
3)Ans:需要更具体的信息,例如样本数据等才能给出答案。
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |