火花重新分区

Spark repartition

重新分区数据需要什么。如何确定spark中的重新分区大小。

repartition概念是否适用于spark streaming和structured streaming。

DF.repartition(数量)

是的,分区概念适用于火花流 (RDD) 和结构化流(结构化 API)。

在应用映射和过滤器类型的操作时,可以使用数据分区来提高并行度。

请注意,当您对数据进行分区时,无论是否有必要,总是 会导致完全洗牌。这适用于 APIs(RDD 和结构化)。

有时,对数据进行重新分区可以避免混洗并提高性能,因为可以在分区内更改数据。例如,如果您知道您将多次按特定列(例如 "country")进行过滤,则值得根据该列重新分区:

df.repartition(col("country"))

RDD 和 Structured API 之间的主要区别在于,仅对于 RDD(意思是火花流),您可以定义自己的 Partitioner class。这为您提供了数据分区方式的所有灵活性,因此如果使用得当,可以显着提高性能和稳定性。