您的位置:首页 > 其它

Spark之Action操作

2016-05-31 22:50 330 查看
1.reduce(func):通过函数func先聚集各分区的数据集,再聚集分区之间的数据,func接收两个参数,返回一个新值,新值再做为参数继续传递给函数func,直到最后一个元素

 

2.collect():以数据的形式返回数据集中的所有元素给Driver程序,为防止Driver程序内存溢出,一般要控制返回的数据集大小

 

3.count():返回数据集元素个数

 

4.first():返回数据集的第一个元素

 

5.take(n):以数组的形式返回数据集上的前n个元素

 

6.top(n):按默认或者指定的排序规则返回前n个元素,默认按降序输出

 

7.takeOrdered(n,[ordering]): 按自然顺序或者指定的排序规则返回前n个元素

例1:

def main(args: Array[String]) {

    val conf = new SparkConf().setMaster("local").setAppName("reduce")

    val sc = new SparkContext(conf)

    val rdd = sc.parallelize(1 to 10,2)

    val reduceRDD = rdd.reduce(_ + _)

    val reduceRDD1 = rdd.reduce(_ - _) //如果分区数据为1结果为 -53

    val countRDD = rdd.count()

    val firstRDD = rdd.first()

    val takeRDD = rdd.take(5)    //输出前个元素

    val topRDD = rdd.top(3)      //从高到底输出前三个元素

    val takeOrderedRDD = rdd.takeOrdered(3)    //按自然顺序从底到高输出前三个元素

 

    println("func +: "+reduceRDD)

    println("func -: "+reduceRDD1)

    println("count: "+countRDD)

    println("first: "+firstRDD)

    println("take:")

    takeRDD.foreach(x => print(x +" "))

    println("\ntop:")

    topRDD.foreach(x => print(x +" "))

    println("\ntakeOrdered:")

    takeOrderedRDD.foreach(x => print(x +" "))

    sc.stop

  }

输出:

func +: 55

func -: 15 //如果分区数据为1结果为 -53

count: 10

first: 1

take:

1 2 3 4 5

top:

10 9 8

takeOrdered:

1 2 3

8.countByKey():作用于K-V类型的RDD上,统计每个key的个数,返回(K,K的个数)

 

9.collectAsMap():作用于K-V类型的RDD上,作用与collect不同的是collectAsMap函数不包含重复的key,对于重复的key。后面的元素覆盖前面的元素

 

10.lookup(k):作用于K-V类型的RDD上,返回指定K的所有V值

def main(args: Array[String]) {

   val conf = new SparkConf().setMaster("local").setAppName("KVFunc")

   val sc = new SparkContext(conf)

   val arr = List(("A", 1), ("B", 2), ("A", 2), ("B", 3))

   val rdd = sc.parallelize(arr,2)

   val countByKeyRDD = rdd.countByKey()

   val collectAsMapRDD = rdd.collectAsMap()

 

   println("countByKey:")

   countByKeyRDD.foreach(print)

 

   println("\ncollectAsMap:")

   collectAsMapRDD.foreach(print)

   sc.stop

 }

输出:

countByKey:

(B,2)(A,2)

collectAsMap:

(A,2)(B,3)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: