RDD入门——RDD 概念

 RDD 在哪

RDD入门——RDD 概念_第1张图片

RDD是什么

  1. RDD,全称为 Resilient Distributed Datasets ,是一个容错的,并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区

  2. 同时,RDD还提供了一组丰富的操作来操作这些数据. 在这些操作中,诸如map, flatMap, filter 等转换操作实现了 Monad 模式,

    很好地契合了Scala的集合操作. 除此之外,RDD还提供了诸如join,groupBy,reduceByKey 等更为方便的操作,以支持常见的数据运算

  3. 通常来讲,针对数据处理有几种常见模型,包括:Iterative Algorithms, Relational Queries, MapReduce, Stream Processing

    例如 Hadoop MapReduce 采用了MapReduce模型,Storm则采用了Stream Processing模型.RDD混合了这四种模型,使得 Spark可以应用于各种大数据处理场景,

  4. RDD 作为数据结构. 本质上是一个只的分区记录集合. 一个RDD可以包含多个分区,每个分区就是一个DataSet片段

  5. RDD之间可以相互依赖,如果RDD的每个分区最多只能被一个子RDD的一个分区使用,则称之为窄依赖,若被多个子RDD的分 区依赖,则称之为宽依赖. 不同的操作依据其特性,可能会产生不同的依赖. 例如mp操作会产生窄依赖,而join 操作则产生宽依赖

RDD的特点

  1. RDD 是数据集
  2. RDD 是编程模型
  3. RDD 相互之间有依赖
  4. RDD 是可以分区的

补充

RDD的分区:

RDD入门——RDD 概念_第2张图片

整个 WordCount 案例的程序从结构上可以用上图表示, 分为两个大部分

存储

文件如果存放在 HDFS 上, 是分块的, 类似上图所示, 这个 wordcount.txt分了三块

计算

Spark 不止可以读取 HDFS, Spark 还可以读取很多其它的数据集, Spark 可以从数据集中创建出 RDD

例如上图中, 使用了一个 RDD 表示 HDFS 上的某一个文件, 这个文件在 HDFS 中是分三块, 那么 RDD 在读取的时候就也有三个分区, 每个 RDD 的分区对应了一个 HDFS 的分块

后续 RDD 在计算的时候, 可以更改分区, 也可以保持三个分区, 每个分区之间有依赖关系, 例如说 RDD2 的分区一依赖了 RDD1 的分区一

RDD 之所以要设计为有分区的, 是因为要进行分布式计算, 每个不同的分区可以在不同的线程, 或者进程, 甚至节点中, 从而做到并行计算

总结

  1. RDD 是弹性分布式数据集
  2. RDD 一个非常重要的前提和基础是RDD运行在分布式环境下,其可以分区

你可能感兴趣的:(Spark,大数据,spark,大数据)