gpt4 book ai didi

scala - Apache Spark 性能调优

转载 作者:行者123 更新时间:2023-12-02 20:24:20 24 4
gpt4 key购买 nike

在使用 Upsert(插入和更新记录)逻辑将 4MB 文件加载到配置单元表时,我遇到了性能问题。作为此负载的一部分,我们有两个阶段 -

第 1 阶段 - 将 4MB 文本文件加载到表 A

第 2 阶段 - 通过从返回大约 600 万条记录的表 A 中排除 source_code NOT IN ("ABC") 来加载表 B

val finalizedDf= sparkSession.sql(s"""select * from $tableA where $source_code not in ("ABC")""")


finalizedDf.write.format("parquet").mode("Overwrite").insertInto(tableB)

插入表 B 时,由于内存限制超过执行程序内存开销,作业失败。此外,负载运行超过 5 小时。请针对上述情况推荐性能转向技巧:)

最佳答案

在 spark 中执行性能调优时需要考虑很多事情。

  • 什么是随机分区集?默认情况下,它设置为 200。您需要将其更改为更大的数字。 spark.sql.shuffle.partitions=1000
  • 执行器核心和执行器内存。通过查看描述,在我看来,执行程序的内存较少。更少的内存会频繁触发 GC,从而减慢 Spark 的执行速度。尝试增加它。
  • 您不需要 overwrite在执行 insertInto 时。

  • 改用这个。
    finalizedDf.write.format("parquet")
    .insertInto(tableB)

    关于scala - Apache Spark 性能调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58108456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com