一、前述
Spark中默认有两大类算子,Transformation(转换算子),懒执行。action算子,立即执行,有一个action算子 ,就有一个job。
通俗些来说由RDD变成RDD就是Transformation算子,由RDD转换成其他的格式就是Action算子。
RDD五大特性
1、RDD由一系列partition组成
2、算子作用在partition上
3、RDD之间存在一系列依赖关系
4、分区器作用在k,v格式的RDD上
5、partiton提供最佳的计算位置
sc.textFile()调用的是mr底层读取hads数据的方法,先进行切片(split)
一个split对应一个block块,split对应一个RDD的一个partition
二、常用Transformation算子
1、filter
过滤符合条件的记录数,true保留,false过滤掉。
2、map
将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
特点:输入一条,输出一条数据。
3、flatMap(压扁输出,输入一条,输出零到多条)
先map后flat。与map类似,每个输入项可以映射为0到多个输出项。
4、sample(随机抽样)
随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样。(True,fraction,long)
True 抽样放回
Fraction 一个比例 float 大致 数据越大 越准确
6、sortByKey/sortBy
作用在K,V格式的RDD上,对key进行升序或者降序排序。