Spark-RDD-行动算子

行动算子总结

在这里插入图片描述

所谓的行动算子,其实就是用于触发RDD运行的方法
spark中,调用RDD对象的行动算子,会执行作业,每一次调用,都会执行不同的作业

reduce:聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),2)
    rdd.map(_*2)
    val i: Int = rdd.reduce(_+_)
    rdd.collect()
    println(i)

collect:在驱动程序(Driver)中,以数组Array的形式返回数据集的所有元素
collect算子会按照分区编号采集数据
collect会将分布式的数据汇总到driver端

	   val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4))
// 收集数据到driver
    rdd.collect().foreach(println)

count:返回RDD中元素的个数

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4))
    val l: Long = rdd.count()
    print(l)

first:返回RDD中的第一个元素

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4))
        val i: Int = rdd.first()
    println(i)

take:返回一个由RDD的前n个元素组成的数组

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4))
        val i: Array[Int] = rdd.take(2)
    i.foreach(println)

takeOrdered:返回该RDD排序后的前n个元素组成的数组

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4))
        val ints: Array[Int] = rdd.takeOrdered(3)(Ordering.Int.reverse)
ints.foreach(println)

aggregate:分区的数据通过初始值和分区内的数据进行聚合,然后再和初始值进行分区间的数据聚合
算子的初始值再分区内和分区间都会参与运算
fold:折叠操作,aggregate的简化版操作

val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4),2)
        val result: Int = rdd.aggregate(2)(_+_,_+_)
        val result1: Int = rdd.fold(2)(_+_)
    println(result)
    println(result1)

countByKey:统计每种key的个数

val rdd: RDD[(Int, String)] = sc.makeRDD(List((1, "a"), (1, "a"), (1, "a"), (2, "b"), (3, "c"), (3, "c")))
    val map: collection.Map[Int, Long] = rdd.countByKey()
    map.foreach(println)

save相关算子:将数据保存到不同格式的文件中

foreach:分布式遍历RDD中的每一个元素,调用指定函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值