spark(四):RDD介绍

说明

本博客每周五更新一次。 RDD 是spark计算引擎重要的数据结构,使用RDD开发业务,必须深入学习使用它。

什么是RDD

  • RDD(Resilient Distributed Dataset) 弹性分布式数据集,spark中最重要数据结构概念,代表一个不可变、可分区、可并行计算的集合,逻辑上是一个数据集,物理上可以分块分布在不同的机器上并发运行。
  • RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性,能分布在集群的节点上,以函数式操作集合的方式,进行各种并行计算。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。
  • RDD内置大量函数,可以大大提升开发效率,快速完成功能开发。

RDD生命周期

  • spark程序中,首先创建或读取RDD,然后对数据进行一系列一次或多次变换操作(Transform),并对保存中间结果(Cache),最后对结果进行处理(Action)。

创建RDD

  • RDD的创建可以通过对内存中的数据并行化计算结果,或直接读取分布式数据库(S3, HDFS, Cassandra 等等)创建,也可以直接读取本地文件创建。

RDD变换

  • RDD变换操作支持数据变换接口,常见如filter, map等等,执行到变换代码是,RDD数据并不立即发生实际变化(Lazily transform),而是保存数据的依赖关系,直到最终RDD进行动作(Action)时。RDD系统从全局角度来优化Transform的运行过程,节省计算时间。

RDD缓存

  • 缓存(cache)操作将数据的中间结果保存在内存中,以便反复使用。

RDD结果处理

  • RDD结果处理(action)操作将数据的运算结果进行统计和返回。常见如count 和 collect。

RDD特性

RDD默认有如下重要特性。

  1. 如何分块(Partition)
  2. 与父RDD依赖关系(Dependency)
  3. 从父RDD求子RDD的函数(Function)
  4. 当前RDD存储位置(Preferred Localtion)
  5. 存储RDD分块类(Partitioner)

RDD限制

  1. 没有任何内置优化引擎
  2. 不能处理结构化数据

RDD函数

RDD的创建有两种常用方式:

  • sc.parallelize()
  • sc.makeRDD()

总结

  • RDD是Spark数据集合的一种,还有DataFrame、DataSet等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章