spark 两个并行参数的区别

spark.default.parallelism 与spark.sql.shuffle.partitions 的区别

这是另一个极易混淆的参数。它们在Spark的不同API层起作用:

spark.default.parallelism

RDD API

 和 

DataFrame/Dataset的某些转换

(底层由RDD实现的操作)。

如 

RDD.reduceByKey()

RDD.join()

sc.parallelize()

spark.sql.shuffle.partitions

Spark SQL 和 DataFrame/Dataset API

如 

df.groupBy().agg()

df.join()

 等SQL风格的shuffle操作。

默认值为200

Spark配置的三大层级与优先级

为了清晰理解,我们将其分为三个层级,从上到下,优先级递增

1. Cluster Default (集群默认)

在Cluster Manager的

配置文件

中设置。

对该集群上

所有默认启动

的Spark应用生效。

但优先级最低

,常被应用级配置覆盖。

在 

$SPARK_HOME/conf/spark-defaults.conf

 中写:

spark.default.parallelism 100

2. Application (应用)

在提交应用的 

spark-submit

 命令中通过 

--conf

 指定,或在应用代码中通过 

SparkSession.builder.config()

 设置。

对该

特定Spark应用

(从启动到停止)内的

所有Job

生效。

优先级高于集群默认

spark-submit --conf spark.default.parallelism=200 ...

3. Job/Stage (作业/阶段)

在应用代码中,

针对特定操作

动态指定。

仅对那个

特定的RDD操作

生效,覆盖应用级和集群级的默认值。

优先级最高

rdd.repartition(500)

 或 

df.rdd.reduceByKey(func, numPartitions=500)

全部评论

相关推荐

小肥罗:我觉得“实习生不了解也很正常”可能只是客套话,面试官的标准是希望答上来。另外,面试官没有马上结束面试,恰恰证明他想给你机会,想多考察你看你是否其他方面符合要求。面试时间长反而证明面试官还是看好你的,想多给你机会表现一下自己。
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务