【问题标题】:Spark Executor low performance while writing a dataframe to parquet将数据帧写入镶木地板时,Spark Executor 性能低下
【发布时间】: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


    【解决方案1】:

    你用的是什么hadoop集群环境?

    1) Ans : 你是在写文件的时候唱 partitionColumnBy 吗?否则试试看。

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

    3) Ans : 需要更具体的信息,如样本数据等才能给出答案。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2018-12-22
    • 2020-06-30
    • 2020-04-02
    相关资源
    最近更新 更多