RDD的简介

在spark中,有一个不可变的分布式数据结构,即弹性分布式数据集(RDD),它是逻辑集中的实体,在集群中的多个节点上被分为多个分区。通过对多个节点上不同RDD分区的控制,能够减少机器之间的数据重排(data shuffling)。

Spark提供了一个”partitionBy”运算符,能够通过集群中多个节点之间对原始RDD进行数据再分配来创建一个新的RDD。

RDD是spark的核心数据结构,通过RDD的依赖关系形成spark的调度顺序。通过对RDD的操作形成整个spark程序。

RDD 可以包含 Python、Java、Scala 中任意类型的对象,甚至可以包含用户自定义的对象。

(1)RDD的三种生成方式
1)从Hadoop文件系统(与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、Hbase)输入(如HDFS)创建。
例如:
>>> lines = sc.textFile("test.txt")

2)在驱动器程序里分发驱动器程序中的对象集合(比如list和set)。
>>> lines = sc.parallelize(List(1,2,3))

3)从父RDD转换得到新的RDD
>>>testlines = lines.filter(line=>line.contains("spark"))
 
RDD其实并没有存储数据,只是数据的一个映像,RDD的内部属性有以下部分:

1)分区列表。

2)计算每个分区的函数

3)对父RDD的依赖列表

4)对key-Value对数据类型RDD的分区器,控制分区策略和分区数

5)每个数据分区的地址列表(如HDFS上的数据块的地址)
 
RDD支持粗粒度和细粒度的读操作。RDD上的很多函数操作(count和collect等)都是批量读操作,即扫描整个数据集,可以将任务分配到距离数据最近的节点上。同时,RDD也支持细粒度操作,即在哈希或范围分区的RDD上执行关键字查找。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值