首页 > 其他 > 详细

RDD

时间:2020-04-22 10:04:58      阅读:68      评论:0      收藏:0      [点我收藏+]

什么是RDD(Resilient Distributed Dataset)


??RDD叫作弹性分布式数据集合,是spark中最基本的数据(计算、逻辑)抽象,在代码中它是一个抽象类,代表一个不可变、可分区、里面的元素的可并行计算的集合。

RDD属性


1.一组分区,即数据集的基本组成单位
2.一个计算每个分区的函数
3.RDD之间存在依赖关系(血统)
4.一个Partitioner,即RDD的分片函数
5.一个列表,存储存取每个Partition的优先位置(移动数据不如移动计算)

  • 进程本地化
  • 节点本地化
  • 机架本地化

RDD特点


??RDD表示只读的分区的数据集,对RDD进行改动,只能铜鼓RDD的转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必须的信息。RDDs之间存在依赖,RDD执行的是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD来切断血缘关系。如果程序中多次使用同一个RDD,可以将该RDD进行缓存,只有在第一次计算的时候回根据血缘关系得到分区数据,在后续其他地方用到直接从缓存中取

算子


Spark中所有的RDD方法都称为算子,有转换算子和行动算子两大类。

创建RDD


有三种创建方式

  • 从集合中创建
  • 从外部存储创建
  • 从其他RDD创建

注:以下都是在local部署模式下的条件上说明

从集合中创建

spark提供了两种函数:parallelize()和makeRDD(),底层实现都是用的parallelize()
1.使用parallelize()

val  arrayRDD = sc.parallelize(Array(1,2,3,4))
val  arrayRDD = sc.parallelize(Array(1,2,3,4),X) #自定义分区数量,默认是8

2.使用makeRDD()

val listRDD = sc.makeRDD(lsit(1,2,3,4))

从外部存储系统的数据集创建

默认情况下,可以读取项目路径,也可以读其他路径,例如HDFS

val fileRDD = sc.textFile("XXX")
val fileRDD = sc.textFile(("XXX"),X) #这里自定义分区为最小分区数,具体如何分区依赖于hadoop的切片规则

RDD的转换

**RDD整体上分为Value类型和Key-Value类型

1.Value类型

  • map(func)
  • mapPartitions(func)[基于分区的,可以简单的按批处理来理解]
  • mapPartitionsWithIndex(func)

RDD

原文:https://www.cnblogs.com/zqzhen/p/12747554.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!