本次主要介绍Spark是如何将应用程序转化为逻辑处理流程的,包括RDD数据模型概念、数据操作概念,以及数据依赖关系的建立规则等。
一.spark处理流程概览
spark 典型的逻辑处理流程包括四部分:
1 数据源:数据源表示的是原始数据,数据可以存放在本地文件系统和分布式文件系统中,如HDFS、分布式Key-Value数据(HBase)等。
2 数据模型:确定了数据源后,我们需要对数据进行操作处理。首要问题是如何对输入/输出、中间数据进行抽象表示,使得程序能够识别处理。在面向对象中将数据抽象为对象(object)。然后,我们可以在对象上定义数据操作,Hadoop MapReduce框架将输入/输出、中间数据抽象为K,V,record。这种数据表示方式的优点是简单易操作,缺点是过于细粒度,没有对这些数据进行更高层的抽象,导致只能使用map(K,V)这样的固定形式去处理数据,而无法使用类似面向对象程序的灵活数据处理方式。Spark认知到了这个缺点,将输入/输出、中间数据抽象表示为统一 的数据模型命名为RDD,RDD中可以包含各种类型的数据。
它与普通的数据结构的主要区分有三点:
1)RDD只是一个逻辑概念,在内存中并不会真正地为某个RDD分配 存储空间(除非该RDD