码迷,mamicode.com
首页 > 其他好文 > 详细

Spark RDD 默认分区数量 - repartitions和coalesce异同

时间:2017-07-27 20:24:54      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:ber   bsp   nbsp   读取   文件读取   精准   cores   shuff   int   

RDD.getNumPartitions()方法可以获得一个RDD分区数量,

1、默认由文件读取的话,本地文件会进行shuffle,hdfs文件默认会按照dfs分片来设定。

2、计算生成后,默认会按照executor-number*executor-cores来分片,也就是spark默认按照总工作核数来对数据分片,而不是工作实例数。

 

RDD.repartitions(n:Int)和RDD.coalesce(n:Int,shuffle : Boolean)

都是对RDD进行重新分区。

源码实现上:def repartitions(n:Int) = coalesce(n,true)

coalesce在shuffle参数为true是,必要情况下会进行shuffle操作。但若为False,则在不shuffle的情况下尽量满足重分区操作。

repartition则是在shuffle配置为true下的coalesce。

 

故而,对性能要求较高情况下或对重分区结果要求不苛刻的情况下,使用coalesce进行重分区,shuffle配置默认为false。

对重分区结果要求比较精准的情况下,使用repartition或者shuffle置true的coalesce。

 

 

小结:RDD分区数按照核数来分而不是实例数。

 

Spark RDD 默认分区数量 - repartitions和coalesce异同

标签:ber   bsp   nbsp   读取   文件读取   精准   cores   shuff   int   

原文地址:http://www.cnblogs.com/suanec/p/7246542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!