为了调优和故障排查,经常有必要知道RDD中有多少个Partition。有如下几个方式可以找到这些信息:

使用Spark web UI查看任务执行和分区情况

当一个stage执行的时候,你可以在Spark UI中查看一个指定stage的分区个数。例如,下面的代码创建了一个有100个元素,4个分区的RDD。然后在将元素收集回driver程序前做了一个虚拟的map任务:

scala> val someRDD = sc.parallelize(1 to 100, 4)
someRDD: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:12scala> someRDD.map(x => x).collect
res1: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)

在spark的application UI中,你可以看到如下的截图,其中Total Tastks代表分区的个数:

使用Spark UI查看分区缓存

当持久化RDD的时候,这可以用来理解有多少partition被存储。下面的例子中,我们在处理一个RDD前先缓存它。完成之后,我们可以在UI中理解这个操作之后,什么东西被存储了。

scala> someRDD.setName("toy").cache
res2: someRDD.type = toy ParallelCollectionRDD[0] at parallelize at <console>:12scala> someRDD.map(x => x).collect
res3: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)

从截图中可以看出,有四个分区被缓存了。


用程序的方式查看RDD分区

在scala的API中,一个RDD保存着它的分区数组的索引,利用这个你可以找出RDD中有多少个分区:

scala> val someRDD = sc.parallelize(1 to 100, 30)
someRDD: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:12scala> someRDD.partitions.size
res0: Int = 30

在python的API中,也有显式地给出分区数的方法:

In [1]: someRDD = sc.parallelize(range(101),30)In [2]: someRDD.getNumPartitions()
Out[2]: 30

注意在上面的例子中,分区数被故意在初始化的时候设置为30.

本文内容整理自https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/performance_optimization/how_many_partitions_does_an_rdd_have.html,所有权力归原作者所有。

判断RDD有多少个分区相关推荐

  1. A.2.5-输入年,月,判断本月有多少天?

    ylbtech- .NET-Basic: A.2.5-输入年,月,判断本月有多少天? A.2.5-输入年,月,判断本月有多少天? //输入年,月 //定义函数判断一个年份是否为闰年 //定义函数,根据 ...

  2. 判断数据是增量分区全量分区

    如何判断数据是增量分区,还是全量分区 (保存数据T-1的全量,通常保存进一个月的数据为T-1的全量) 增量形式:不包含历史所有的数据,只是当天的数据 where dt between 'T-7' an ...

  3. 输入一个字符串,判断里面有多少个单词(c语言)

    #define _CRT_SECURE_NO_WARNINGS #define StrLength 100#include<stdio.h> #include<stdlib.h> ...

  4. Spark RDD并行度与分区设置

    默认情况下,Spark 可以将一个作业切分多个任务后,发送给 Executor 节点并行计算,而能 够并行计算的任务数量我们称之为并行度.这个数量可以在构建 RDD 时指定.记住,这里 的并行执行的任 ...

  5. rdd分片 spark_Spark分区

    一.分区的概念 分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务 ...

  6. Java输入年份与月份判断月份有多少天

    package dome;import java.util.Scanner;/*** 控制台输入年份和月份* 输出这一年这一月一共有多少天* 比如:* 输入:2019年8月* 输出:2019年8月一共 ...

  7. 根据输入的月份值,判断当月有多少天

    练习:根据用户传递的月份值,判断当前月有多少天.如果是2月,根据用户传输的年份,判断2月的天数.switch 和if两种方法 方法一:public class IfTest{ public stati ...

  8. MySQL分区的限制(最多有多少个分区)

    MySQL分区的限制 •   只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列 •   最大分区数目不能超过1024 •   如果含有唯一索引或者主键,则分区列必须包含在所有的唯一 ...

  9. [leetcode] Max Points on a Line 判断最多有多少个点在同一条直线上

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

最新文章

  1. javacurrentmap_Java集合---ConcurrentHashMap原理分析
  2. Java中的DeskTop类
  3. 有关递归的三道算法题总结
  4. 中国人工智能产业发展指数重磅发布,中国声谷首批AI达摩名单揭晓
  5. DCMTK:CT采集类型FG类的测试
  6. 收敛和发散思维如何被用作解决问题的手段
  7. 【Codeforces - 977D】Divide by three, multiply by two(思维构造)
  8. python快递代取系统_代取快递的变现方式,校园跑腿的经营范围有多大?
  9. 阿里云ECS家族再添新成员,推出密集计算型实例规格族ic5
  10. xcode 工程没有模拟器_Xcode只允许我运行iOS设备(没有模拟器)
  11. CentOS 7下配置IP地址
  12. 小明放学201812-2
  13. Android使用iconfont图标
  14. CAD插入块不显示,通过复制到原坐标实现两图的叠加
  15. 微信二维码线下推广是否有效
  16. 【编程题】【Scratch二级】2019.09 制作蝙蝠冲关游戏
  17. Google的一个代理网站: 仅限技术搜索
  18. ssh远程No route to host问题解决
  19. 一份来自蚂蚁金服大佬的数据库设计总结(纯干货)
  20. Unit Test(UT)单元测试

热门文章

  1. vimrc.local 备份
  2. 利用SuppressMessage来阻止FxCop进行代码分析时报出的警告
  3. 基础知识—数据类型-第一个C++程序
  4. mysql frm 恢复_mysql 从 frm 文件恢复 table 表结构的3种方法
  5. 呐,你要的新年攻略和文章汇总
  6. 2018数据技术嘉年华-金融峰会·重庆站6.29相约相聚!
  7. 集成学习中的随机森林
  8. 【华为云技术分享】计算python程序执行时间
  9. 【华为云技术分享】ARM体系结构基础(1)
  10. 【华为云技术分享】云图说|第三方云厂商数据如何迁移至华为云OBS?真相在这里......