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)