【问题标题】:How to choose the optimal repartition value in sparkspark中如何选择最优的repartition值
【发布时间】:2022-10-07 01:45:35
【问题描述】:

我有 3 个输入文件 文件 1 - 27gb 文件 2 - 3gb 文件 3 - 12mb

我的集群配置 2 执行人 每个执行器有 2 个核心 执行器内存 - 13gb(2gb 开销)

我要执行的转换是左连接,其中左表是file1,右表是file2和file3

我需要将 file1 和 file2 重新分区为最佳分区数,以免浪费时间/资源。

提前致谢

    标签: apache-spark optimization pyspark apache-spark-sql apache-spark-sql-repartition


    【解决方案1】:

    你没有写任何其他的转换,所以我假设你想创建一个非常简单的工作,它只执行这个一个连接

    您不是在询问 file3,所以我假设您将使用提示进行广播,这是一个很好的方向。

    如果您在此加入之前没有做任何事情,我不确定这是否值得重新分区 file1/file2,因为它们很可能将与 SMJ 加入(排序合并加入 - 它根据加入条件中的列对两个数据集进行改组)和此连接的输出 df 将具有等于 spark.sql.shuffle.partitions 的分区数,因此您可以尝试调整此参数(这也会影响其他 shuffle,因此请记住我在第一行的假设)

    您可以尝试将此参数调整为更大的数据集(file1)以创建大约 100-200 mb 的分区。我认为值得阅读这篇博文:Medium blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2023-04-06
      • 2021-04-30
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多