Spark中的最佳重新分区方式

Posted

技术标签:

【中文标题】Spark中的最佳重新分区方式【英文标题】:Optimal way of repartition in Spark 【发布时间】:2020-08-06 13:13:24 【问题描述】:

我有 500 MB 的 csv 文件,我正在将其作为数据框读取 我正在寻找这个数据帧的分区的最佳值 我需要做一些广泛的转换并将这个数据框与另一个 csv 连接起来,所以我现在有以下 3 种方法来重新分区这个数据框

    df.repartition(核心数) 按照计算500MB/128MB~4个分区对dataframe重新分区,每个分区至少有128MB数据 使用 csv 的特定列对数据帧进行重新分区,以便将数据放在相同的分区中

我想知道这些选项中的哪一个最适合在 Spark 2.4 中进行并行计算和处理

【问题讨论】:

【参考方案1】:

如果您非常了解数据,那么使用列对数据进行分区效果最好。但是,每当集群配置发生变化时,基于块大小和核心数量的重新分区都会发生变化,并且如果您的集群配置在更高的环境中不同,您需要对每个环境进行这些更改。因此,总而言之,数据驱动的重新分区是更好的方法。

【讨论】:

以上是关于Spark中的最佳重新分区方式的主要内容,如果未能解决你的问题,请参考以下文章

如何保证 Spark Dataframe 中的重新分区

Spark DataFrame重新分区:未保留的分区数

如何在倾斜列上重新分区 Spark scala 中的数据框?

Spark:读取文本文件后的重新分区策略

Hive 分区到 Spark 分区

Spark重新分区不均匀分布记录