Spark 算子:RDD Action -2

作者: Codlife | 来源:发表于2016-08-23 20:44 被阅读0次

1. count ,first ,take ,collect这几个意思很显眼就不细说了

2. top 排序,降序 取

3.takeOrdered 排序 ,升序

4.reduce,下面是两个典型的例子

  def testReduce(): Unit ={
    val rdd1=sc.makeRDD(1 to 10,2)
    println(rdd1.reduce(_ + _))
    val rdd2 =sc.makeRDD(Array(("a",1),("b",2),("c",3)))
    println(rdd2.reduce((x ,y) => {
      (x._1 + y._1, x._2 + y._2)
      //输出abc 6
    }))
  }

5.forEach

forEach只会在每个executor 中执行,而不是driver 端,如果在driver 需要用到某些值,可以使用 take 取值
结合 DoubleAccumulator 使用 简直完美

  def testForeach(): Unit ={
    var cnt=sc.doubleAccumulator("0")
    var rdd1= sc.makeRDD(1 to 10,2)
    println(rdd1.foreach( x=> cnt.add(x)))
    println(cnt.value)
  }

6. saveAs

  • saveAsTextFile(path,codec) 可以指定压缩
    如果 /tmp/ 将会把文件存储到executor 所在的节点上
  • saveAsSequenceFile
  • saveAsObjectFile
  • saveAsHadoopFile
  • saveAsHadoopDataset
  • saveAsNewAPIHadoopFile
  • saveAsNewAPIHadoopDataset

相关文章

网友评论

    本文标题:Spark 算子:RDD Action -2

    本文链接:https://www.haomeiwen.com/subject/jijnsttx.html