1、SparkContext [经常简称为 sc]
spark app 的起点和入口,一般用来加载数据集,生成第一个 rdd。
2、定义一个 spark 应用程序所需要的三大步骤的逻辑:加载数据集,处理数据,结果展示。
- 加载数据集
加载数据集,这里的数据集大概分为两组:
- 一种是不变的,静态数据集,大多数场景都是从数据库,文件系统上面加载进来
- 另一种是动态的数据集,一般做 streaming 应用的时候用到,大多数场景是通过 socket 来加载数据,复杂场景可以通过文件系统,akka actors,kafka,kinesis 和 一些第三方提供的 streaming api [twitter 等] 来作为数据源加载数据
- 处理数据
处理数据,这是重点中的重点,不过不外乎都是从三个方面来完成这里的数据清理,逻辑运算等:
- 自定义的一些复杂处理函数或者第三方包 [下面我们称为函数集]
- 通过 RDD 的 transform,action 和函数集来完成整个处理,计算流程
- 通过 RDD 提供的 cache,persist,checkpoint 方法把一些处理流程中的重要处理节点和常用数据缓存和备份,以加速处理,计算速度
- 结果展示
结果展示,这里一般情况都是使用 RDD 的 collect,take,first,top 等方法把结果取出来,更常用的是先把结果取出来,放到一个数据库或文件系统上,然后再提供给专门展示结果的另一个 application 使用。
3、有向无环图(DGA):
有向无环图,有向即有方向,无环即不可逆,其实更详细的说是一个时间上的先来后到,即祖先与子孙的关系,是不可逆的。
4、RDD
关于RDD的一篇论文翻译