action算子会触发spark进行运算,用于job划分,一个action算子就是一个job。
带有shuffle的算子用于划分stage(一个分区的数据去往多个分区),例如reduceByKey、
action算子如下:
1、count()
返回数据集中的元素数。会在结果计算完成后回收到Driver端。
2、take(n)
返回一个包含数据集前n个元素的集合。
3、first()
first=take(1),返回数据集中的第一个元素。
4、foreach
循环遍历数据集中的每个元素,运行相应的逻辑。
5、collect
将计算结果回收到Driver端。
过滤掉出现次数多的记录,并且其余记录按照出现次数降序排序。
val result =data.flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(x=>x._2).persist()
val maxdata = result.map(x=>x._1).first() result.filter( x=> if (!x._1.contains(maxdata)) {true}else{false}).collect().foreach(println(_))