spark
--------- rdd算子学习 ---------
转换算子: 返回值还是一个rdd就是转换
是懒加载的算子,没有动作算子不执行
第一个算子 MAP 解释:一个参数传入和一个必须给的返回值,对每一个数字进行计算
第二个算子 FLATMAP 解释:先map再解除嵌套功能,参数跟map是一样的
第三个算子 reduceByKey 解释:两个参数一个返回值,类型一致,按照key分组,按照value聚合(怎么聚合都行)叠加聚合
#传入的参数只针对聚合的处理的
第四个算子 mapValues 解释:只操作value的map算子
第五个算子 groupby 解释:跟sql关键字一样,将rdd进行分组,一个传入一个返回,不限制类型
传递参数是跟那个值进行分组
第六个算子 filter 解释:过滤算子 ,一个传入参数,返回布尔型,对保留错不留
第七个算子 distinct 解释:按照几个分区去去重复,按照无参数去处理 ,顺序不保证可能需要排序算子
第七个算子 union 解释:把两个rdd合并成一个rdd算子,传入另外一个rdd算子,不去重
第八个算子 join 解释:只能用在k,v行的数据,只能用在两个二元元祖,只按照key关联
第九个算子 intersection 解释:判断两个数据是否有交集,把交集取出返回新rdd
第十个算子 glom 解释:查看分区的分布,可以看到数据在那个分区,返回一个list
第十一个算子 groupBykey 解释:要求必须十k,v类型,自动按照key分组,直接调用没有传入参数
第十二个算子 sortBy 解释:根据指定函数排序,传递一个返回一个。三个参,最后一个多少个分区进行排序
第十三个算子 sortByKey 解释:只是针对k,v类型的数据,只是针对key的,最后一个参数对key进行修改
Action算子收集算子:
第十四个算子 countByKey 解释:统计key出现次数,适用kv型的rdd
第十五个算子 collect 解释:收集所有数据到Driver中,收集所有结果集,结果集不会太大,如果太大不好弄了
第十六个算子 reduce 解释:对rdd数据集按照传入逻辑进行聚合,(T,T)-》T
第十七个算子 fold 解释:带有聚合初始值的reduce print(rdd.fold(10,lambda a, b: a + b)) 105,分区间聚合,分区内聚合
第十八个算子 first() 解释:拿到第一个元素
第十九个算子 take(5) 解释:拿到第五个元素
第二十个算子 top(5) 解释:降序排序前几个
第二十一个算子 count() 解释:计算rdd有多少数据
第二十二个算子 takeSample() 解释:随机抽样算子,参数1:是否重复,参数2:采几个,参数3:随机数种子一般不用传递
第二十三个算子 takeOrdered() 解释:排序取前n个
**********************性能比较好的函数********************
第二十四个算子 *foreach() 解释:没有返回值的map方法 fun(T)-> null,
***很重要的一点****
在分区内执行,但是没有返回值,不会把数据发送到DIRVER
效率特别高,不用对dirver回报结果
例子:链接mysql数据库,可以每一个talk并行插入
第二十五个算子 saveAsTextFile 解释:写出文件也是分区直接执行跳过DIRVER
第二十六个算子 mapPartitions 解释:分区计算代码,一次io整体过去了,跟map过程比较优秀的算子
接受一个参数一个返回值,传递迭代器对象,两个list