圳鹏大数据: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

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

你可能感兴趣的:(圳鹏大数据:spark Rdd的默认分区)