spark学习——RDD概念

RDD定义

  RDD(Resilient Distributed Dataset)是弹性分布式数据集,是spark中最基本的数据抽象,代表一个不可变可分区可并行计算的数据集合。
  不可变:可认为RDD是分布式的列表(list)或数组(Array),它里面的值可增可减但是不可改变原有数据的值,这就是不可变,变量的声明使用 val;
  可分区:集合的数据被划分为很多部分,每部分称为分区(Partition);
  可并行计算:每个分区数据被一个任务(task)处理。
  RDD将spark的底层细节隐藏起来,让开发者可以像操作本地集合一样以函数式编程的方式操作RDD,RDD中很多处理数据函数与列表相同或相似。

RDD特性

  RDD有五大特性:

  1. A list of partitions
    RDD可看做是一个分区列表。首先它是一个列表,由于RDD是可分区的,所以这个列表是一个分区了的列表,也就是被划分成多个分片。划分的好处是可以并行计算,因为每个分片都会被一个 task 计算,分片数决定计算的并行度。在创建RDD时可以指定分片个数。
  2. A function for computing each split
    RDD的计算是通过函数进行的,由于RDD是分区的,所以函数必须分配到每个分区上。
  3. A list of dependencies on other RDDs
    一个RDD会依赖于其他多个RDD。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算(spark 的容错机制)。
  4. Optionally, a partitioner for key-val RDDs
    可选项,对于 key-value 类型的RDD会有一个 partitioner,即RDD的分区函数。当前spark实现了两种类型的分区函数,一个是基于哈希的 HashPartitioner,另一个是基于范围的 RangePartitioner。
  5. Optionally, a list of preferred locations to compute each split on
    可选项,一个列表,存储每个 Partition 的优先位置。按照”移动数据不如移动计算“的理念,spark在进行任务调度的时候,会尽可能选择那些存有数据的 worker 节点来进行任务计算。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值