Spark中有两类算子
1.transformations(转换算子):延迟执行
算子返回值是一个RDD
2.Action(行动算子):触发执行
算子返回值是非RDD类型
transformations类算子
1.map:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
2.filter:对元素进行过滤
3.reduceByKey:按key值将两个值合并成一个值
4.flatMap:输入一条数据,输出n>0条数据
map与flatMap区别:
flatMap:输入一条数据,输出N条数据
map:输入一条数据,输出一条数据
5.sample:将 RDD 这个集合内的元素进行采样,获取所有元素的子集。用户可以设定是否有放回的抽样、百分比、随机种子,进而决定采样方式.第一个参数:抽样的方式。第二个参数:抽样的比例。第三个参数:随机算法的初始值。
6.sortByKey:根据key的大小来排序,默认升序排序
7.sortBy:可以指定按照哪一个字段来排序
8.mapPartitions:rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。
两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。
9.mapPartitionsWithIndex:可以拿到每一个partition的分区号,这个算子用于算法的测试
10.repartitions:重分区,增加RDD分区数
11.coalesce:重分区的算子,coalesce(,false)用于减少RDD的分区数
12.Distinct:将RDD中的数据进行去重(去重是去除RDD中完全相同的数据)她的底层实现是map+ reduceByKey+foreach
Action类算子
1.foreach:遍历RDD.这个算子不会将传入的函数推送到Executor端执行,并不会将结果拉回到Driver端。但是如果使用的是collect算子来触发job执行,那么会将task的计算结果拉回到Driver端。collect算子慎用。
2.count:统计这个RDD中记录数
3.saveAsTextFile 将RDD的计算结果写入到HDFS上,或者本地磁盘
4.collect:能够将每一个task的计算结果回收到Driver端,一般用于测试
5.countByKey:和count的区别需要再看一下
6.take:取出RDD中前N个元素
7.reduce:可以将一个RDD中的数据进行聚合,聚合逻辑数由用户传入。
网友评论