spark中各种数量的确定和查询(持续更新中)
数量 | 决定/设置方式 | 函数查询方式 | 备注 |
partition数量 |
|
rdd1.getNumPartitions 或者 rdd1.partitions.size |
configures the number of partitions that are used when shuffling data for joins or aggregations. |
partition数量 |
|
rdd1.getNumPartitions 或者 rdd1.partitions.size |
default number of partitions in RDD s returned by transformations like join , reduceByKey , and parallelize
|
task数量 | number-of-tasks = number-of-partitions或者"one task per stage per partition”[1] | 不存在查命令/函数行询方式 | |
executor数量 | --num-executors | 不需要查询,直接命令行或者配置文件中设定即可 | |
job数量 | 每次spark-submit/spark-shell提交任务就是一个job | 不存在查命令/函数行询方式 | |
stage数量 | 根据DAG依赖图来确定(其实还是根据代码来确定的) | 不存在查命令/函数行询方式 |
根据[1]可知,task数量就是partition的数量。
stage只是一个时间单位,
stage0执行完了执行stage1,然后执行stage2
注意不要搞混“并行度”(parallelism)和"并发数"(concurrency)两个概念
[3]spark.default.parallelism 默认是没有值的,如果设置了值比如说10,是在shuffle的过程才会起作用(val rdd2 = rdd1.reduceByKey(_+_) //rdd2的分区数就是10,rdd1的分区数不受这个参数的影响)
new SparkConf().set(“spark.default.parallelism”,”“500)
spark.sql.shuffle.partitions //spark sql中shuffle过程中partitions的数量
[4]
如果是读取hdfs的文件,一般来说,partition的数量等于文件的数量。
如果单个文件的大小大于hdfs的分块大小,partition的数量就等于 “文件大小/分块大小”。
同时,也可以使用rdd的repartition方法重新划分partition。
另外,在使用聚合函数比如 reducebykey, groupbykey,可以通过指定partitioner来指定partition的数量。
例如:
val rdd2 = rdd1.reduceByKey(_+_,10)
这里的10可以覆盖前面的spark.default.parallelism
val rdd3 = rdd1.join(rdd2) rdd3里面partiiton的数量是由父RDD(这里指的是rdd1和rdd2)中最多的partition数量来决定,因此使用join算子的时候,增加父RDD中partition的数量。
num-executors * executor-cores的2~3倍即为task(partition)数量,此时可以比较充分地利用集群资源[5]
Reference:
[1]http://How are stages split into tasks in Spark?
[2]What is the difference between spark.sql.shuffle.partitions and spark.default.parallelism?
[3]Spark性能调优之合理设置并行度
[4]Spark作业中Partition数目的划分是由什么决定的?
[5]spark 体验点滴- executor 数量 和task 并行数
spark中各种数量的确定和查询(持续更新中)相关推荐
- 香港电影中的演员:B字头(持续更新中)
作者:caocao(网络隐士) 转载请注明来源:http://www.caocao.name/ 本系列部分内容是隐士从网上采集,部分内容是隐士原创,内容持续更新中. 白彪 隐士八卦:白彪师傅可是邵氏当 ...
- 香港电影中的演员:F字头(持续更新中)
作者:caocao(网络隐士) 转载请注明来源:http://www.caocao.name/ 本系列部分内容是隐士从网上采集,部分内容是隐士原创,内容持续更新中. 樊梅生 隐士八卦:樊梅生当年是邵氏 ...
- 香港电影中的演员:A字头(持续更新中)
作者:caocao(网络隐士) 转载请注明来源:http://www.caocao.name/ 本系列部分内容是隐士从网上采集,部分内容是隐士原创,内容持续更新中. A字头演员隐士觉得的好难找啊. 安 ...
- 香港电影中的演员:G字头(持续更新中)
高飞 批发简介:高飞是空手道教练转行,身手自然不会差,在香港拍动作片也成了自然而然的事情.按照时间顺序,早些他的是在邵氏电影里头混,演些江湖人物或黑道人物:邵氏关闭之后和成龙洪金宝多有合作,做起了打手 ...
- spark中各类key算子的用法汇总(持续更新中)
启动方式: spark-shell --master yarn 依赖导入: import org.apache.spark.{SparkConf, SparkContext} 输出rdd的类型举例: ...
- 大数据发行版本+组件中的竞品/等同地位关系(持续更新中)
开源大数据版本 公司/开源组织 是否付费 备注 Apache Hadoop Apache 否 大数据组件的最初发型版 CDH Cloudera's Distribution Including Apa ...
- 大数据集群中数据互相导通流程汇总(持续更新中)
X:原理上不存在这种流程或者没有必要. 加粗:数据库或数据仓库 非加粗:表示文件格式 ☆:表示重点,正在整理中 左侧列:数据源头 上侧行:数据传递终点 Hbase HDFS json txt My ...
- hexo主题应用中遇到的问题和解决方案(持续更新中)
1 常见问题解决技巧 1.1 主题仓库和博客仓库嵌套 在使用github和hexo主题搭建个人博客过程中,我们使用hexo初始化的文件夹需要交给github进行代码托管,同时主题themes中的主题也 ...
- mysql查询更新优化_mysql查询优化(持续更新中)
1.索引不会包含有NULL值的列 (1) 应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2) 数据库设计时不要让字段的默认值为null,可以 ...
最新文章
- left join 临时表_不懂SQL优化?那你就OUT了——表连接的优化
- 数据产品经理从零到一:数据产品能力模型构建
- Android之使用PopupWindow使用和总结
- 曝张一鸣在游戏群批员工上班时聊游戏,遭回怼:那你退群啊
- 百度利用AI技术8、9月打击超83亿条有害信息
- 基础03String类、static、Arrays类、Math类
- 代写R语言assignment经常用到的代码语法分享!
- 如何快速学习PLC编程
- 什么是云计算管理平台
- NorthWind基本数据库添加问题
- 车架号识别系统-VIN码识别查询
- ipod nano7安装linux,怎么用ipod nano看视频?
- gst-launch-1.0用法小记
- 差异数据的对比和整理
- axis的xml转java的实际开发使用笔记
- 模型优化与tensorflow
- spark-调优(代码层面)
- WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验
- SPDR年内增量尽数被抹 市场看空金市
- 提升.NET技术水平,我从不内卷!
热门文章
- 用java来实现验证码功能
- 成员变量的初始化和内存中的运行机制
- 转【FullPage.js 应用参数参考与简单调用】
- C#如何获得系统时间
- unable to execute dex:GC overhead limit exceeded unable to execute dex:java heap space 解决方案
- MySQL 5.1 安装过程中报apply security setting错误的解决办法 收藏
- [转载]让SQL运行得更快
- XCTF-高手进阶区:Web_php_unserialize(详解)
- DVWA--File Inclusion(文件包含)--四个级别
- JS高级-自执行函数-垃圾回收机制及内存管理