【问题标题】:Spark repartition火花重新分区
【发布时间】:2020-05-07 18:28:16
【问题描述】:

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

重新分区概念是否适用于火花流和结构化流。

DF.repartition(num)

【问题讨论】:

    标签: apache-spark apache-spark-sql spark-streaming spark-structured-streaming


    【解决方案1】:

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

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

    请注意,当您对数据进行分区时,无论是否有必要,都会始终进行一次完全随机播放。这适用于两种 API(RDD 和结构化)。

    有时,对数据进行重新分区可以避免洗牌并提高性能,因为可以在分区内更改数据。例如,如果您知道您将按某个列(例如“国家”)多次过滤,则可能值得基于该列重新分区:

    df.repartition(col("country"))
    

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

    【讨论】:

    • Mike,如何确定分区数。这是否仅由数据大小决定
    猜你喜欢
    • 1970-01-01
    • 2018-07-06
    • 2016-04-23
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2015-12-24
    • 2021-06-13
    • 2020-04-02
    相关资源
    最近更新 更多