目录
Spark共提供3种基本的数据类型,分别是Spark Core引擎对应的RDD,以及Spark SQL引擎对应的DataFrame 和 DataSet。
那么三种数据类型的定义是什么,他们有什么区别呢?
1、RDD是什么
- 分片的集合
RDD(resilient distributed dataset)即弹性分布式数据集,它由多个partition(分区)组成的集合。每个partition运行在分布式集群的不同节点上。
默认情况下,每个HDFS的分区文件(默认分区文件块大小是64M)都会创建一个RDD分区。
注:一个文件被切成N份,那么每一份就代表一个分区, 每个分区能被并行的处理。
-
函数作用在每个分区
RDD共包含两种计算方式,一种是transformations转换(如:map, filter, groupBy, join等),一个种是actions操作(如:count, collect, save等),每种计算方式对应的具体函数,详见《RDD常用操作》
函数作用在每个分区上并行执行。通过转换或者操作后,生成新的RDD,旧的RDD内容不变。
注意:Transformations转换是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations转换时只会记录需要这样的转换,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。写代码的时候,一定要特别注意,基本是新手必踩的坑!!!
-
RDD之间有一系列依赖关系
由于RDD每次转换计算都会生成新的RDD,所以RDD