1、RDD概念
RDD数据模型就是将复杂的逻辑,拆分成很小的计算单元,并对要计算的数据进行分区,对计算单元的拆分有利于计算逻辑的重复利用,对数据的分区有利于并行计算,提高程序的执行效率。
1.1 RDD理解
可以将RDD理解成链表中的Node节点,Spark的计算就是通过对RDD计算单元的组合操作,完成业务需求。
1.2 RDD的组合
RDD的功能扩展就是和IO操作的功能扩展类似,在各种stream上套接包装流,提高读写效率的思想一样,采用装饰着设计模式。
RDD中的collect方法,类似于IO中的read方法,只要不调用collect方法,前面的逻辑和方法调用不会被执行。
RDD不存储任何数据,只封装操作数据的逻辑
上图为各种功能套接在textFile方法之上的功能叠加,实现wordcount案例的图示
①flatMap将每一行的内容扁平化为一个一个的单词②Map将每一个单词变换成(单词,1)形式的元组③reduceByKey将元组按照Key分组,并对value做累加得到最后结果。
2.RDD属性
①A list of partitions --->分区列表,为了负载均衡会对数据做分区处理
②A function for computing --->对每个切片(分区)的计算函数
③A dependencies on other RDDs --->对其他RDD的依赖<