スパークコア:RDDプログラムアクション

低減(F(T、T)=> T):T

:関数funcによってRDD内のすべての要素を収集

scala> var rdd=sc.parallelize(1 to 10,2).collect
rdd: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> rdd.reduce(_+_)
res1: Int = 55

scala> sc.makeRDD(Array(("A",0),("A",2),("B",1),("B",2),("C",1)))
res3: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[3] at makeRDD at <console>:25

scala> res3.reduce((x,y)=>(x._1+y._1,x._2+y._2))
res4: (String, Int) = (BBCAA,6)

収集():配列[T]

:ドライバでは、アレイのすべての要素を設定するデータを返します

scala> var rdd=sc.parallelize(1 to 10,2).collect
rdd: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

数():ロング

:RDDの要素数を返します。

scala> var rdd=sc.makeRDD(1 to 10)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[5] at makeRDD at <console>:24

scala> rdd.count
res9: Long = 10

最初の():T

:RDD内の最初の要素を返します。

scala> var rdd=sc.makeRDD(1 to 10)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[6] at makeRDD at <console>:24

scala> rdd.first
res10: Int = 1

配列[T]:(:のInt NUM)を取ります

:最初のn個の要素RDDを返します。

scala> var rdd=sc.makeRDD(1 to 10)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[7] at makeRDD at <console>:24

scala> rdd.take(3)
res11: Array[Int] = Array(1, 2, 3)

takeOrdered(NUM:INT)(暗黙ORD:注文[T])

:最初のいくつか順位を返します。


scala> var rdd=sc.makeRDD(Array(1,3,6,2,4,5))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[10] at makeRDD at <console>:24

scala> rdd.takeOrdered(3)
res14: Array[Int] = Array(1, 2, 3)

集計[U:ClassTag(zeroValue:U)(seqOp:(U、T)=> U、combOp:(U、U)=> U):U

:次いで、集計seqOp初期値を重合することにより素子内の各パーティションのための機能、および各パーティション(zeroValue)の初期値の結果とを組み合わせる演算機能と組み合わせます。この機能は必要とされない種類やRDDと一致最終要素のタイプを返します。

scala> var rdd=sc.makeRDD(1 to 10,2)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[12] at makeRDD at <console>:24

scala> rdd.aggregate(1)(
     | (x:Int,y:Int)=>x+y,
     | (a:Int,b:Int)=>a+b
     | )
res16: Int = 58

scala> rdd.aggregate(1)(
     | (x:Int,y:Int)=>x*y,
     | (a:Int,b:Int)=>a*b
     | )
res17: Int = 3628800

(zeroValue:T)を折る(OP:(T、T)=> T):T

:SEQOPとcombopとして、骨材の操作を簡単にする操作を、折りたたみ。

scala> var rdd=sc.makeRDD(1 to 10,2)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[12] at makeRDD at <console>:24

scala> rdd.aggregate(1)(
     | (x:Int,y:Int)=>x+y,
     | (a:Int,b:Int)=>a+b
     | )
res16: Int = 58

scala> rdd.fold(1)(_+_)
res18: Int = 58

saveAsTextFile(パス:文字列):ユニット

:RDDはテキストファイルとしてローカルまたはHDFSに保存されています

scala> var rdd=sc.makeRDD(1 to 10,2)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[12] at makeRDD at <console>:24

scala> rdd.saveAsTextFile("hdfs://hadoop01:9000/rdd")
[root@hadoop01 ~]# hadoop fs -cat /rdd/*
1
2
3
4
5
6
7
8
9
10

saveAsObjectFile(パス:文字列):ユニット

:ローカルに格納された要素にRDDまたはHDFSは、シリアル化されたオブジェクトを形成します。

scala> rdd.saveAsObjectFile("hdfs://hadoop01:9000/rdd")

countByKey():地図[K、ロング]

(K、V)RDD、マップのリターン(K、int)を、タイプのために、各キーに対応する要素の数を表します。

scala> var rdd=sc.makeRDD(List((1,3),(1,2),(1,4),(2,3),(3,6),(3,8)),3)
rdd: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[17] at makeRDD at <console>:24

scala> rdd.countByKey()
res22: scala.collection.Map[Int,Long] = Map(3 -> 2, 1 -> 3, 2 -> 1)

foreachの(F:T =>ユニット)ユニット

:データセット、関数func更新操作の各要素に対して。

scala> var rdd=sc.makeRDD(1 to 10 ,2)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[20] at makeRDD at <console>:24

scala> rdd.collect().foreach(println)
1
2
3
4
5
6
7
8
9
10

おすすめ

転載: blog.csdn.net/drl_blogs/article/details/92716744