Spark開發-Action操作

Xlucas發表於2017-09-25

核心
1、spark中Action的操作

reduce(func)
reduce取樣累加或關聯操作減少RDD中元素的數量

scala> val data=sc.parallelize(1 to 9)
scala> data.reduce(_+_)
res0: Int = 45

collect()
將execute上的資料收集到driver端上

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

count()
統計有多少給元素在RDD中

scala> val data=sc.parallelize(1 to 9)
scala> data.count()
res2: Long = 9

first()
返回RDD中的第一個元素

scala> val data=sc.parallelize(1 to 9)
scala> data.first()
res4: Int = 1

take(n)
返回RDD中的前n個元素

scala> val data=sc.parallelize(1 to 9)
scala> data.take()
res6: Array[Int] = Array(1, 2, 3, 4, 5)

takeSample(withReplacement, num, [seed])
返回RDD中的隨機元素 false表示每次只取沒有被取過的元素,true表示從整個集合中取

scala> val data=sc.parallelize(1 to 9)
scala> data.takeSample(false,5)
res7: Array[Int] = Array(4, 8, 1, 9, 3)
scala> data.takeSample(true,5)
res8: Array[Int] = Array(1, 7, 8, 8, 7)

takeOrdered(n, [ordering])
返回排序以後的前n個元素

scala> sc.parallelize(Seq(10, 4, 2, 12,4,6,7,0,-1, 3)).takeOrdered(3) 
res11: Array[Int] = Array(-1, 0, 2)

saveAsTextFile(path)
saveAsSequenceFile(path)
saveAsObjectFile(path)
以上3個儲存檔案 將RDD儲存到檔案,本地模式時儲存在本地檔案,叢集模式指如果在Hadoop基礎上則儲存在HDFS上

countByKey()
將RDD中的資料按Key計數

scala> val data = sc.parallelize(List((1,3),(1,2),(5,4),(1, 4),(2,3),(2,4)),3)
scala> data.countByKey()
res9: scala.collection.Map[Int,Long] = Map(1 -> 3, 5 -> 1, 2 -> 2)

foreach(func)
foreach方法遍歷RDD中所有的元素

相關文章