spark Rdd的默认分区

sparkRdd的默认分区有两大因素决定:

1.spark.default.parallelism 
2.文件块的大小

spark.default.parallelism:(默认的并发数)

本地模式下spark.default.parallelism :

spark-shell                             和spark-default.conf相关默认为4


spark-shell --master local[N] spark.default.parallelism = N (使用N个核)

伪集群模式下:

spark-shell --master local-cluster[x,y,z] spark.default.parallelism = x * y
x为本机上启动的executor数,
y为每个executor使用的core数,
z为每个 executor使用的内存

mesos 细粒度模式:

 Mesos fine grained mode  spark.default.parallelism = 8
  • 1

Yarn模式stand模式:

spark.default.parallelism =  max(所有executor使用的core总数, 2)

影响默认分区的因素还有spark.files.maxPartitionBytes = 128 M,分区的数量必须(文件size/12M)

在不同的文件系统中默认分区方式计算方式如下:

从本地文件读取:

rdd的分区数 = max(本地file的分片数, sc.defaultMinPartitions)
  •  

从hdfs分布式文件系统:

rdd的分区数 = max(hdfs文件的block数目, sc.defaultMinPartitions)
  •  

从HBase的数据表:

RDD的分区数为该Table的region数。
  •  

从kafka: 
待续。。。。

引用自:https://www.jianshu.com/p/4b7d07e754fa

猜你喜欢

转载自my.oschina.net/xiaominmin/blog/1825291