前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过spark.default.parallelism谈Spark谈并行度

通过spark.default.parallelism谈Spark谈并行度

作者头像
大数据学习与分享
发布2020-08-10 11:55:31
4630
发布2020-08-10 11:55:31
举报
文章被收录于专栏:大数据学习与分享

本篇文章首先通过大家熟知的一个参数spark.default.parallelism为引,聊一聊Spark并行度都由哪些因素决定?

上图是spark官网关于spark.default.parallelism参数说明:

  1. 对于reduceByKey和join这些分布式shuffle算子操作,取决于它的父RDD中分区数的最大值
  2. 对于没有父RDD的的算子,比如parallelize,依赖于集群管理器:
    1. 本地模式:取决于本地机器的核数
    2. 如果集群管理器是Mesos,则为8
    3. 其他的:对比所有executor上总核数与2比较,哪个大是哪个

当然上面这些都是默认值,如果我们自己设置了分区数,情况就会有所变化,直接看源码【查看org.apache.spark.Partitioner源码defaultPartitioner方法】

你会发现,如果你使用reducebykey、groupByKey等这些带shuffle的算子,建议不要通过上述方法让程序内部去推测。完全可以通过传入一个确定的分区数或者自己实现一个分区器来做处理。当然这个确定的分区数也不是贸贸然设定的,需要结合你的业务场景根据实际情况来确定多少合适。比如shuffle时流经的数据量,这个就要结合分区数和shuffle总数据量来做适当调整,处理不好的结果极有可能导致数据倾斜等问题...

笔者再次建议,学习Spark一定要多看Spark官网http://spark.apache.org/,并且多看源码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据学习与分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档