美文网首页Spark知识点
repartition 和 coalesce算子

repartition 和 coalesce算子

作者: 0_9f3a | 来源:发表于2018-01-02 20:41 被阅读0次

    coalesce(number,bool)
    第一个参数是将RDD划分成几个partition

    第二个算子是确定是否发生shuffle,true指的是发生shuffle,false指的是不发生shuffle

    repartition(number)

    这个算子和coalesce(number,true)的意思是一样的,在RDD转换过程中要发生shuffle。

    下图是一个coalesce和repartition的对比


    repartition和coalesce对比

    问题:coalease(number,false)是不发生shuffle那么如果转换前RDD的partition多于转换后的partition怎么办?

    和转换前RDD个数相同。

    如果coalease(number,false)转换后RDD的partition比转换前RDD的partition少?

    和上图一样,多于的partition只是合并但是不发生shuffle

    结论:
    1.如果想要增加RDD分区数,那么在重分区的过程必须发生shuffle,也就是说要使用repartition算子或者coalese(number,true)

    2.如果向减少RDD分区数,那么在分区的过程可以有shuffle也可以没有shuffle

    在实际应用中,增加RDD的分区数就直接使用repartition算子,如果要减少RDD分区数,要使用coalesce(number,false)

    增加RDD格式可以改变RDD的分区数,可以提高并行度

    相关文章

      网友评论

        本文标题:repartition 和 coalesce算子

        本文链接:https://www.haomeiwen.com/subject/hrwqnxtx.html