spark并发度控制

并行度可以通过如下三种方式来设置,可以根据实际的内存、CPU、数据以及应用程序逻辑的情况调整并行度参数,增加任务的并行度,充分利用集群机器的计算能力,一般并行度设置为集群CPU总和的2-3倍。
1 在会产生shuffle的操作函数内设置并行度参数,优先级最高

1.1 testRDD.groupByKey(24)
1.2 val rdd2 = rdd1.reduceByKey(+ ,10)
val rdd3 = rdd2.map.filter.reduceByKey(+)
1.3 重分区
coalesce和repartition都是对RDD进行重新分区。coalesce操作使用HashPartitioner进行重分区,第一个参数为重分区的数目,第二个为是否shuffle,默认情况为false。repartition操作是coalesce函数第二个参数为true的实现。如果分区的数目大于原来的分区数,那么必须指定shuffle参数为true,否则分区数不变
rdd.coalesce(4,true);
rdd.repartition(5);

2 代码中配置“spark.default.parallelism”设并行度,优先级次之

val conf = new SparkConf()

conf.set(“spark.default.parallelism”, 24)

3 在 “$SPARK_HOME/conf/spark-defaults.conf” 文件中配置“spark.default.parallelism”的值,优先级最低

spark.default.parallelism 24

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
spark并行和shuffle并行Spark中两个重要的概念。 spark并行是指在Spark作业中同时执行的任务数量。它由spark.default.parallelism参数控制,默认值为CPU核心数。可以通过设置该参数来调整并行,以便更好地利用集群资源。 shuffle并行是指在进行shuffle操作时,数据被划分为多个分区并在不同的节点上进行处理的能力。它由spark.sql.shuffle.partitions参数控制,默认值为200。可以通过设置该参数来调整shuffle操作的并行,以便更好地平衡负载和提高性能。 spark.sql.shuffle.partitions和spark.default.parallelism的区别在于它们的作用范围和影响对象。spark.default.parallelism是全局参数,影响整个Spark应用程序的并行。而spark.sql.shuffle.partitions是针对Spark SQL中的shuffle操作的参数,只影响与shuffle相关的操作的并行。 设置spark.sql.shuffle.partitions和spark.default.parallelism的值可以根据具体的需求进行调整。一般来说,可以根据数据量、集群规模和任务复杂等因素来决定并行的设置。较大的并行可以提高作业的执行速,但也会增加资源消耗。较小的并行可以减少资源消耗,但可能导致作业执行时间较长。 总结起来,spark并行是指整个Spark应用程序的任务并行,而shuffle并行是指shuffle操作的并行。可以通过调整spark.default.parallelism和spark.sql.shuffle.partitions的值来优化Spark作业的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值