继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

RDD基础

松花
关注TA
已关注
手记 19
粉丝 94
获赞 669

   RDD基础

一、RDD基本特征

1.RDD是一个基本的抽象,操作RDD就像操作本地集合一样,降低了编程的复杂度。

    A Resilient Distributed Dataset (RDD), the basic abstraction in Spark。

弹性的 可恢复的 分布式的 数据集,是spark中的基本抽象。

2.RDD的特征

  • A list of partition

  • A function for computing each split

  • A list ofo RDD on other RDDs

  • Optionally,a partitioner for key-value RDDs

  • Optionally,a list of perferred locations to compute each split on

  1.     一系列分区,分区有编号,有顺序;

  2.     每一个输入切片会有一个函数作用在上面;

  3.     RDD与RDD之间存在依赖关系;

  4.     (可选)RDD中如果存储的是KV类型,shuffle时会有一个分区器,默认是HashPartitioner ;

  5.     (可选)如果是读取HDFS中的数据,那么会有一个最优位置。

3.RDD的类别

    RDD的算子分为两类,一类是Transformation(lazy),一类是Action(触发任务执行)

RDD不存在真正要计算的数据,而是记录了RDD的转换关系(调用了什么方法,传入了什么函数)

4.创建RDD的方式

    (1)通过外部的存储系统创建RDD

    (2)将Driver的Scala集合通过并行化的方式编程RDD(试验)

    (3)调用一个已经存在的RDD的Transformation,会生成一个新的RDD

     4.1RDD的Transformation的特点

        (1)lazy

        (2)生成新的RDD

5.RDD分区的数据取决于哪些因素?

    (1)如果是将Driver端的Scala集合并行化创建RDD,并且没有指定RDD的分区,RDD的分区就是为该app分配的核数

    (2)如果是从HDFS中读取数据创建RDD,并且设置了最新分区数量是1,

        那么RDD的分区数据既是输入切片的数据,如果不设置最小分区的数量,

        既spark调用textFile时会默认传入2,那么RDD的分区数量会大于等于输入切片的数量

6.RDD与普通的集合有哪些区别?

    RDD里面记录的是描述信息(从哪里读数据,以后对数据如何计算)、

    RDD的方法分为两类:Transformation(lazy)、Action(生成Task,

    并发送到Executor中执行)。

    Scala存储的是真正要计算的数据、执行方法后立即返回结果。

【注】本文参考自小牛课堂

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP