1、资源的并行度(运行时无法改变)
指的就是提交时的申请的总core数。
如果提交到的是local[k]: 资源的并行度就是k
如果提交到的是standalone :资源的并行度就是 --total-executor-cores
如果提交到的是yarn:资源的并行度就是 --num-executors * --executor-cores
2、数据的并行度(运行时可以手动改变)
task的个数,即partition个数
task又分为map时的task和reduce(shuffle)时的task;
task的数目和很多因素有关:
申请的资源的总core数,
(如果是SparkCore)spark.default.parallelism参数,
(如果是SparkSQL)spark.sql.shuffle.partitions参数,
读取数据源的类型:
shuffle方法的第二个参数, 如reduceByKey(lambda, num )
repartition的数目等等。rdd.repartition(num)
3、设置task数量
最好将RDD的分区数设置为:资源的并行度*(2~3倍)
partition个数 =