谈谈spark.sql.shuffle.partitions和 spark.default.parallelism 的区别及spark并行度的理解

  • spark.sql.shuffle.partitions和 spark.default.parallelism 的区别
  • spark并行度的理解
  • 如何设置spark.sql.shuffle.partitions和spark.default.parallelism的值

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

首先两者最直观的区别:
 spark.default.parallelism只有在处理RDD时有效.
 spark.sql.shuffle.partitions则是只对SparkSQL有效.
看一下官网给出的两者定义:

以我的四级水准乱翻译一下:
 spark.sql.shuffle.partitions: 设置的是 RDD1做shuffle处理后生成的结果RDD2的分区数.
  默认值: 200
 spark.default.parallelism: 设置的是 RDD1做shuffle处理/并行处理(窄依赖算子)后生成的结果RDD2的分区数
  默认值:
   对于分布式的shuffle算子, 默认值使用了结果RDD2所依赖的所有父RDD中分区数最大的, 作为自己的分区数.
   对于并行处理算子(窄依赖的), 有父依赖的, 结果RDD分区数=父RDD分区数, 没有父依赖的看集群配置:
    Local mode:给定的core个数
    Mesos fine grained mode: 8
    Others: max(RDD分区数为总core数, 2)

spark并行度的理解

 并行度其实就是指的是spark作业中, 各个stage的taskset中的task的数量, 代表了spark作业中各个阶段的并行度, 而taskset中的task数量 = task任务的父RDD中分区数

如何设置spark.sql.shuffle.partitions和spark.default.parallelism的值

 官网建议: 设置为当前spark job的总core数量的2~3倍. 理由如下:
 背景: spark作业是 1 core 1 task的
 假设我们给当前Spark job 设置总Core数为 100, 那么依据1 core 1 task, 当前spark集群中最多并行运行100task任务, 那么通过设置上述两个参数为100, 使得我们结果RDD的分区数为100, 一个分区 1task 1core, 完美! 但是实际生产中会有这样的情况, 100个task中有些task的处理速度快, 有些处理慢, 假设有20个task很快就处理完毕了, 此时就会出现 我们集群中有20个core处理闲置状态, 不符合spark官网所说的最大化压榨集群能力.
 而如果我们设置上述参数值为199, 此时的现象: 虽然集群能并行处理199个task, 奈何总core只有100, 所以会出现有99个task处于等待处理的情况. 处理较快的那20task闲置下来的20个core就可以接着运行99个中的20个task, 这样就最大化spark集群的计算能力

谈谈spark.sql.shuffle.partitions和 spark.default.parallelism 的区别及spark并行度的理解相关推荐

  1. Spark中的spark.sql.shuffle.partitions 和spark.default.parallelism参数设置默认partition数目

    当不跟随父对象partition数目的shuffle过程发生后,结果的partition会发生改变,这两个参数就是控制这类shuffle过程后,返回对象的partition的 经过实测,得到结论: s ...

  2. spark.sql.shuffle.partitions 和 spark.default.parallelism 的区别

    在关于spark任务并行度的设置中,有两个参数我们会经常遇到,spark.sql.shuffle.partitions 和 spark.default.parallelism, 那么这两个参数到底有什 ...

  3. 由spark.sql.shuffle.partitions混洗分区浅谈下spark的分区

    背景 spark的分区无处不在,但是编程的时候又很少直接设置,本文想通过一个例子说明从spark读取数据到内存中后的分区数,然后经过shuffle操作后的分区数,最后再通过主动设置repartitio ...

  4. sparksql set spark.sql.shuffle.partitions

    在sparksql做join时发现,虽然在这里设置了sparksql的shuffle为1200,但是从实际来看并没有效果– 查了一些资料后发现如果在脚本设置了上图所示的conf,即开启动态分区,那么s ...

  5. Spark 之 Shuffle

    Shuffle 在Spark中Shuffle的目的是为了保证每一个key所对应的value都会汇聚到同一个分区上去聚合和处理. Spark 中的 Shuffle 操作的特点 只有 Key-Value ...

  6. Spark SQL玩起来

    标签(空格分隔): Spark [toc] 前言 Spark SQL的介绍只包含官方文档的Getting Started.DataSource.Performance Tuning和Distribut ...

  7. Spark sql优化

    缓存数据 可以将df或ds进行缓存(cache方法persist方法) 默认存储级别memory_and_disk 参数调优 可以通过配置下表中的参数调节Spark SQL的性能. Property ...

  8. 从spark.default.parallelism参数来看Spark并行度、并行计算任务概念

    1 并行度概念理解 并行度:并行度= partition= task总数.但是同一时刻能处理的task数量由并行计算任务决定(CPU cores决定). 并行度(Parallelism)指的是分布式数 ...

  9. 大数据之Spark(四):Spark SQL

    一.SparkSQL的发展 1.1 概述 SparkSQL是Spark⽣态体系中的构建在SparkCore基础之上的⼀个基于SQL的计算模块. SparkSQL的前身不叫SparkSQL,⽽叫Shar ...

最新文章

  1. 教你识别:虚拟内存和物理内存的区别
  2. CA certificate
  3. 医疗安全监控与检测平台WattsUpDoc
  4. 可能大家都能跑通的ignite的HelloWorld
  5. dig+host+nslookup 域名解析命令
  6. 如何用苹果手机生成扫描件
  7. c语言里有js的预编译环节吗,C语言第十一讲,预处理命令.
  8. mysql gps海拔表_GPS海拔表
  9. redis-cli 链接redis命令
  10. 如何选择深度学习框架 TensorFlow/Torch/Mxnet/Theano
  11. 一段oracle中的“复杂”分组统计sql
  12. 计算机怎么连接佳能打印机驱动,佳能打印机怎么连接电脑
  13. 开源cnc软件_带有开源软件的CNC铣削
  14. 素材解析程序源代码,用thinkphp开发的 支持12大网站,其他需要定制
  15. 自然语言处理——分词系统(正向最大匹配法)
  16. 欧姆龙OMRON PLC程序,威纶触摸屏螺丝机 配方程序。 用ST语言编写程序+威纶触摸屏程序
  17. MySql中的minus用法
  18. 第十四届蓝桥杯模拟赛c++ 试题 I
  19. 我为什么选择Go语言(Golang)
  20. 我所知道的张小龙 by和菜头

热门文章

  1. 计算机网络王小茹,计算机网络(王小茹)3.pdf
  2. ssh连接出现:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  3. shell脚本详解(三)——循环语句之for循环
  4. linux笔记之 开机服务启动的控制,系统日志的查看,防火墙的关闭
  5. selenium自动化测试框架_selenium自动化测试框架之PO设计模式
  6. python数据分享人力资源_Python数据分析帮你清晰的了解整理员工们的工作效率和整体满意度...
  7. python调用chrome插件_Python使用Chrome插件实现爬虫过程图解
  8. cad自动标注界址点_这样绘制cad施工图,提升效率至少3倍以上!
  9. .net ajax批量删除,asp.net 全部选中与取消操作,选中后的删除(ajax)实现无刷新效果...
  10. 2sin30°在python中如何表示_如何在python中实现以下派生公式?