RDD的概念与创建

  1、RDD是整个Spark的计算基石。是分布式数据的抽象,为用户屏蔽了底层复杂的计算和映射环境

  •    RDD是不可变的,如果需要在一个RDD上进行转换操作,则会生成一个新的RDD
  •    RDD是分区的,RDD里面的具体数据是分布在多台机器上的Executor里面的。堆内内存和堆外内存 + 磁盘。
  •    RDD是弹性的。
      • 存储:Spark会根据用户的配置或者当前Spark的应用运行情况去自动将RDD的数据缓存到内存或者磁盘。他是一个对用户不可见的封装的功能。
      • 容错:当你的RDD数据被删除或者丢失的时候,可以通过血统或者检查点机制恢复数据。这个用户透明的。
      • 计算:计算是分层的,有应用->JOb->Stage->TaskSet-Task  每一层都有对应的计算的保障与重复机制。保障你的计算不会由于一些突发因素而终止。
      • 分片:你可以根据业务需求或者一些算子来重新调整RDD中的数据分布。

  2、Spark Core干了什么东西,其实就是在操作RDD

        RDD的创建--》RDD的转换--》RDD的缓存--》RDD的行动--》RDD的输出。

 3、RDD怎么创建?

        创建RDD有三种方式:

        1、可以从一个Scala集合里面创建

    •          sc.parallelize(seq)  把seq这个数据并行化分片到节点
    •          sc.makeRDD(seq)      把seq这个数据并行化分片到节点,他的实现就是parallelize
    •          sc.makeRDD(seq[(T,seq)]  这种方式可以指定RDD的存放位置

        2、从外部存储来创建,比如sc.textFile("path")

        3、从另外一个RDD转换过来。

原文地址:https://www.cnblogs.com/alexzhang92/p/10776398.html