Spark-RDD

1.RDD是什么

RDD:弹性分布式数据集(Resillient Distributed Dataset),是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。

2.RDD的主要特征:

1)RDD是由一系列的partition组成的。
2)函数是作用在每一个partition(split)上的。
3)RDD之间有一系列的依赖关系。
4)RDD提供一系列最佳的计算位置。
在这里插入图片描述

3.RDD的创建:

(下面的代码都是在spark-shell中完成,后面会写在idea里面完成的)

1)从集合中创建RDD:

利用SparkContext类中的两个方法:parallelize和makeRDD。
在这里插入图片描述

2)从外部存储创建RDD:

从外部存储创建RDD是指从内部读取数据文件创建RDD。
利用SparkContext对象的textFile方法读取数据集。 用 sc.textFile(“路径”),在路径前面加上"file:///"
在这里插入图片描述

3)从其它RDD创建:

在这里插入图片描述

4.RDD两种类型操作:

1)转换操作(lazy模式):

基于现有的数据集创建一个新的数据集。(map、filter、faltMap、sortBy、distinct、union、groupByKey、reduceByKey)
①map:通过转换已有的RDD生成新的RDD。
在这里插入图片描述
②filter:过滤RDD中的元素。
rdd.filter(x=>x.2>1) 也可以写成rdd.filter(._2>1) 2是表示第二个元素。
在这里插入图片描述
③flatMap:扁平化(压成同一级别,常用来用来切分单词)。
flatMap其实相当于先Map后flatten。(Map+flatten)
在这里插入图片描述
④sortBy:排序。
第1、2、3个参数为:进行排序的值、降序、分区设置
在这里插入图片描述
⑤distinct:去重。
直接用即可。
⑥Union:将两个RDD元素合并成一个,不进行去重操作。
⑦intersection:求交集。
⑧subtract:求并集。
◉cartesian:笛卡儿积。(将两个集合的元素两两组合成一组,A,B两个RDD有2个元素,则使用cartesian求则会得到4个元组的RDD)

2)行动操作:

在数据集上进行运算,返回计算值。(collect、count、first、take、reduce、saveAsTestFile、foreach)
①collect:以数组的形式返回RDD中所有元素。
②count:RDD中元素的个数。
③first:返回RDD中的第一个元素。
④take(N):取RDD中的前N个元素。
⑤reduce:并行整合RDD中所有数据
在这里插入图片描述

3)两者区别:

转化操作返回的是 RDD,而行动操作返回的是其他的数据类型;
RDD的所有转换操作都是懒执行的,只有当行动操作出现的时候Spark才会去真的执行。

还有一些,后面再补。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章