【发布时间】:2020-05-07 18:28:16
【问题描述】:
重新分区数据的需要是什么。 spark中如何决定repartition的大小。
重新分区概念是否适用于火花流和结构化流。
DF.repartition(num)
【问题讨论】:
标签: apache-spark apache-spark-sql spark-streaming spark-structured-streaming
重新分区数据的需要是什么。 spark中如何决定repartition的大小。
重新分区概念是否适用于火花流和结构化流。
DF.repartition(num)
【问题讨论】:
标签: apache-spark apache-spark-sql spark-streaming spark-structured-streaming
是的,分区概念适用于火花流 (RDD) 和结构化流(结构化 API)。
在应用地图和过滤器类型的操作时,可以使用数据分区来提高级别并行度。
请注意,当您对数据进行分区时,无论是否有必要,都会始终进行一次完全随机播放。这适用于两种 API(RDD 和结构化)。
有时,对数据进行重新分区可以避免洗牌并提高性能,因为可以在分区内更改数据。例如,如果您知道您将按某个列(例如“国家”)多次过滤,则可能值得基于该列重新分区:
df.repartition(col("country"))
RDD 和结构化 API 之间的主要区别在于,仅对于 RDD(意味着火花流),您可以定义自己的 Partitioner 类。这为您提供了数据分区方式的所有灵活性,因此如果使用得当,可以显着提高性能和稳定性。
【讨论】: