基本概念
主要分为两大类Trasnformation和Action
trasnformation(转换):主要是物理的转换,不会触发任务的真正的执行,只会记录我们进行了什么操作,等到真正执行再去计算
action(动作):会触发spark程序真正的执行,调用action的时候,前面进行一系列的trasnformation操作包括action都会被执行
trasnformation常用算子
map:将所有的元素取出,经过func函数转换成一个新的RDD
filter:返回一个新的RDD,该RDD经过func函数计算,返回true的元素
flatMap:先经过map函数,再进行flat压平
mappartitions:类似map,但是是把分区里的所有元素汇集成一个集合,然后再执行逻辑,形成新的RDD
union:合并,将两个RDD中的数据进行合并,返回一个新的RDD(取并集)
intersection:合并,(取交集)
distinct:去重,对原来的RDD进行去重,返回新的RDD
partitionBy:分区,有分区可以重新分(可以做一些数据的合并,还有数据倾斜的问题)
reduceByKey:在一个<K,V>的RDD上调用,返回一个(K,V)的RDD,可以使相同的K合并,reduce个数第二个参数设置(可选项) 提前在本地做聚合
groupByKey:和reduceByKey最终的结果是一样的,groupByKey不是在本地合并是在最终进行合并
sortByKey:按照K进行排序
sortBy:指定某一个元素进行排序
join:把相同的K合并,V形成集合(装到元祖中去)
clalesce:缩减分区数,用于大数据集过滤后,提高小数据集的执行效率
mapvlaues:针对<K,V>类型,只对V进行操作
subtract:计算差的一种函数,只保留不同的
Action常用算子
reduce:通过func函数聚集RDD中所有元素,必须是可交换,可并联的
collect:将RDD中的元素打印出来
count:统计一个多少条数据
first:取出RDD中第一个元素
take(N),取出RDD中前N个值
top(N):排序取前N,从大到小
takeOedered(N),排序取出前N个值,从小到大
saveAsTextFile(path):保存到指定的路径中(本地或HDFS)
foreach:在数据集的每一个元素上,进行func进行更新