首页  

spark core RDD     所属分类 spark 浏览量 194
RDD Resilient Distributed Dataset 弹性分布式数据集
论文 《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》

RDD 提供了一个抽象的数据模型,不用关心底层数据的分布式特性,
只需将具体的应用逻辑表达为一系列转换操作(函数),
不同 RDD 之间的转换操作之间还可以形成依赖关系,进而实现管道化,
避免中间结果的存储,降低了数据复制、磁盘IO和序列化开销

Resilient     弹性的,RDD里的数据 保存在 内存 或 磁盘
Distributed   分布式存储的,支持分布式计算
Dataset       数据集

Internally, each RDD is characterized by five main properties:
A list of partitions
A function for computing each split
A list of dependencies on other RDDs
Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

分区 Partition 列表 
一个个分片一个计算任务,分片数决定并行度
可在创建 RDD 时指定 分片个数 ,没有指定,采用默认值

RDD 计算 以分片为单位,compute 函数 作用在每个分区上

一个 RDD 依赖于其他多个 RDD
RDD 的每次转换都会生成一个新的 RDD,RDD 形成类似于流水线一样的前后依赖关系
部分分区数据丢失时,通过依赖关系重新计算丢失的分区数据,而不是对 RDD 的所有分区进行重新计算
容错机制
KV 类型的 RDD 会有一个 Partitioner,分区函数,默认 HashPartitioner

存储存取每个 Partition 的优先位置
HDFS 文件  保存每个 Partition 所在块的位置
移动数据不如移动计算  理念,任务调度时,就近选择 worker 节点 进行任务计算

分区列表 计算函数 依赖关系 分区函数(默认hash) 最佳位置


RDD 创建方式 基于外部存储 本地文件创建 val rdd1 = sc.textFile("hdfs://node1:8020/wordcount/input/words.txt") 通过已有的 RDD , 算子转换生成新的 RDD val rdd2=rdd1.flatMap(_.split(" ")) 基于集合创建 val rdd3 = sc.parallelize(Array(1,2,3,4,5,6)) val rdd4 = sc.makeRDD(List(1,2,3,4,5,6)) makeRDD 方法底层调用 parallelize 方法 可指定分区数 val rdd = sc.makeRDD(List(1,2,3,4,5,6),2)

上一篇     下一篇
spark3 例子

Apache Pinot 分布式实时分析和存储系统

Presto简介

spark RDD saveAsTextFile

spark RDD 分组求平均例子

spark RDD 持久化 缓存