文章目录
概述
RDD(A Resilient Distributed Dataset):弹性分布式数据集,是Spark中最基本的数据抽象,用来表示分布式集合,支持分布式操作。
诞生背景
没有RDD/Dataset之前做 Wordcount(大数据计算)可以使用:
- 原生集合:Java/Scala中的List但是只支持单机版!不支持分布式,如果要做分布式的计算需要做很多额外工作,例如线程/进程通信,容错,自动均衡等,麻烦,所有就诞生了解决这些问题的框架。
- MapReduce效率低运行效率低开发效率低)–早就淘汰
所以需要有一个分布式的数据抽象,也就是用该抽象,可以表示分布式的集合,那么基于这个分布式集合进行操作,就可以很方便的完成分布式的Word Count!(该分布式集合底层应该将实现的细节封装好,提供简单易用的API)
五大属性
在RDD对象中,每个RDD都有五个主要的属性:
- 分区列表: 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)