【问题标题】: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