I started to use spark on yarn recently and found a problem while tuning my program.
When SparkContext is initialized as sc and ready to read text file from hdfs, the textFile(path, defaultMinPartitions) method is called.
I traced down the second parameter in the spark source code and finally found this:
conf.getInt("spark.default.parallelism", math.max(totalCoreCount.get(), 2)) in CoarseGrainedSchedulerBackend.scala
I do not specify the property “spark.default.parallelism” anywhere so the getInt will return value from the larger one between totalCoreCount and 2.
When I submit the application using spark-submit and specify the parameter: --num-executors 2 --executor-cores 6, I suppose the totalCoreCount will be
2*6 = 12, so defaultMinPartitions will be 12.
But when I print the value of defaultMinPartitions in my program, I still get 2 in return, How does this happen, or where do I make a mistake?