1.1 why?
为什么需要RDD
没有RDD/DataSet之前,做WordCount(大数据计算)可以使用:
1、原生集合:java/scala中的list,但是只支持单机版!不支持分布式!如果要做分布式的计算,需要做很多额外工作,线程/进程通信,容错,自动平衡…
2、MR:效率低(运行效率低,开发效率低) --早就淘汰
所以需要有一个分布式的数据抽象,也就使用该抽象,可以表示分布式的集合,那么基于这个分布式集合进行操作,就可以很方便地完成分布式的WordCount(该分布式集合底层应该改将实现的细节封装好,提供简单易用的API)
1.2 what?
RDD:弹性分布式数据集。是spark中最基本的数据抽象,用来表示分布式集合,支持分布式操作
1.3 五大属性
Internally,each RDD is characterized by five main properties:
- 分区列表:A List of partitions
- 计算函数:A function for computing each split
- 依赖关系:A list dependencies on other RDDs
- 分区器:Optionally,a Partitioner for key-value RDDs
- 计算位置:Optionally,a list of preferred locations to compute each split on