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
网友评论