行动操作:
惰性求值:【RDD的特性】
-------------------------------------------------------------------------------------------------------------------
在RDD行动操作之前,不触发计算。转换操作和创建操作、控制操作均为惰性的;
只有行动操作可触发Job。
-------------------------------------------------------------------------------------------------------------
定义:触发Job,调用runJob()方法:
比如:collect、count
1.first():T 表示返回RDD中的第一个元素,不排序
2.count(): Long表示返回RDD中的元素个数
3.reduce(f:(T,T)=>T):T根据映射函数f,对RDD中的元素进地二元计算
4.collect():Array[T]表示将RDD转换成数组
5.take(num:Int)Array[T]表示获取RDD中从0到num-1下标的元素,不排序
scala> var rdd1 = sc.makeRDD(Seq(10,4,3,12,3))
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[4] at makeRDD at
<console>:24
scala> rdd1.take(1)
res7: Array[Int] = Array(10)
6.top(num:Int)Array[T]表示从RDD中,按照默认(降序)或者指定的排序规则,返回前num个元素
scala> rdd1.top(3)
res8: Array[Int] = Array(12, 10, 4)
7.takeOrdered(num:Int):Array[T]和top类似,只不过以和top相反的顺序返回元素
scala> rdd1.takeOrdered(3)
res9: Array[Int] = Array(3, 3, 4)
8.sortBy[K](f:(T))=>K 定义RDD为键值类型
scala> var rdd1 = sc.makeRDD(Array(("A",2),("A",1),("B",6),("B",3),("B",7)))
rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[7] at makeRDD at <console>:24
按照键值升序
scala> rdd1.sortBy(x=>x).collect
res10: Array[(String, Int)