看目录可能方便
1、由集合创建的RDD
1.1、指定了分区数
val rdd = sc.parallelize(list,6)
分区数 = 指定分区数
1.2、设置了spark.default.parallelism
val sc = new SparkContext(new SparkConf().set("spark.default.parallelism","10").setMaster("local[4]").setAppName("test"))
默认分区数 = spark.default.parallelism的值
1.2、没有指定分区数
1.2.1、集群模式
分区数 = math.max(所有executor CPU核数, 2)
1.2.2、本地模式
val sc = new SparkContext(new SparkConf().set("spark.default.parallelism","10").setMaster("local[4]").setAppName("test"))
//本例中分区数就是4
分区数 = local[N]中的N
2、由读取文件创建的RDD
2.1、指定了分区数
分区数 = 指定分区数
val rdd = sc.textFile("datas",4) //分区数就是4
2.2、没有指定最小分区数
分区数 >= math.min(defaultParallelism, 2)
3、通过rdd衍生
分区数: 默认分区数 = 父rdd分区数