Spark配置在spark-submit与SparkSession中设置的性能差异问题
配置设置方式是否会影响Spark作业性能?
问题描述
我有两个代码与数据完全一致的Spark作业:一个通过spark-submit传递所有配置参数,另一个在创建SparkSession时添加相同配置,但两者的作业执行时间差异显著。请问配置的设置方式是否会对性能产生影响?
spark-submit配置示例
spark-submit --conf spark.sql.files.maxPartitionBytes=268435456 \ --master yarn --deploy-mode cluster --conf spark.yarn.maxAppAttempts=1 \ --conf spark.sql.hive.metastorePartitionPruning=false \ --conf spark.sql.adaptive.enabled=true --conf spark.dynamicAllocation.enabled=false --class com.lslsamamance s3://seaembly-1.0.jar --ren_id 1
SparkSession配置示例(Scala)
val spark: SparkSession = SparkSession.builder() .appName(appName) .enableHiveSupport() .config("spark.sql.sources.partitionOverwriteMode", "dynamic") .config("spark.sql.hive.metastorePartitionPruning", "false") .config("spark.sql.adaptive.enabled", "true") .config("spark.dynamicAllocation.enabled", "false") .config("spark.sql.parquet.filterPushdown", "true") .getOrCreate()
回答
配置的设置方式本身不会直接导致性能差异,但实际运行中出现的显著耗时差距,核心原因是两种方式下的实际生效配置并不完全一致,或者部分配置的生效时机不符合要求。
从你的配置示例看,明显存在配置不一致的地方
- spark-submit中包含但SparkSession代码未设置的关键配置:
spark.sql.files.maxPartitionBytes=268435456:控制文件读取的分区大小,直接影响作业并行度--master yarn --deploy-mode cluster:指定作业运行在Yarn集群模式,这是影响性能的核心因素之一spark.yarn.maxAppAttempts=1:Yarn应用重试次数,虽不直接影响单次执行性能,但作业重试会间接拉长总耗时
- SparkSession代码中包含但spark-submit未设置的配置:
spark.sql.sources.partitionOverwriteMode=dynamicspark.sql.parquet.filterPushdown=true
可能导致性能差异的具体原因
- 集群模式不匹配:如果SparkSession代码未指定
--master yarn,作业可能默认以local模式运行,完全没有集群并行能力,执行时间会大幅增加。 - 关键优化配置缺失:比如
spark.sql.files.maxPartitionBytes用默认值(通常128MB)和你设置的256MB,会导致分区数量差一倍,并行度直接减半,性能自然下降。 - 配置生效时机错误:部分Spark配置(如集群模式、资源分配、Yarn相关参数)必须在SparkContext初始化前设置,也就是只能通过spark-submit传递,在SparkSession.builder中设置这类参数不会生效,作业会用默认配置运行。
- 默认配置差异:如果两种方式下有未显式设置的配置,Spark会根据运行环境加载不同的默认配置(比如集群的spark-defaults.conf),可能导致实际生效的配置出现偏差。
排查建议
- 导出并对比完整生效配置:在两个作业的代码中添加
spark.conf.getAll.foreach(println),打印所有生效配置,逐一对比找出不一致的项。 - 确认运行模式:通过Spark UI或Yarn UI查看SparkSession方式启动的作业是否真的运行在Yarn集群模式下。
- 统一所有配置项:确保两种方式下的所有关键配置(集群模式、资源参数、SQL优化参数)完全一致,不要遗漏任何显式设置的项。
内容的提问来源于stack exchange,提问作者user3858193
相关产品推荐
相关产品推荐

