真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spark常用的action算子-創(chuàng)新互聯(lián)

action算子簡(jiǎn)介

Action類算子也是一類算子(函數(shù))叫做行動(dòng)算子,如foreach,collect,count等。Transformations類算子是延遲執(zhí)行,Action類算子是觸發(fā)執(zhí)行。一個(gè)application應(yīng)用程序(就是我們編寫的一個(gè)應(yīng)用程序)中有幾個(gè)Action類算子執(zhí)行,就有幾個(gè)job運(yùn)行。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),武平企業(yè)網(wǎng)站建設(shè),武平品牌網(wǎng)站建設(shè),網(wǎng)站定制,武平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,武平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1.reduce

通過(guò)函數(shù)func聚集數(shù)據(jù)集中的所有元素,這個(gè)函數(shù)必須是關(guān)聯(lián)性的,確??梢员徽_的并發(fā)執(zhí)行

scala> val rdd1 = sc.makeRDD(1 to 10)
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[3] at makeRDD at :24

scala> rdd1.reduce(_+_)
res3: Int = 55

2.collect

在driver的程序中,以數(shù)組的形式,返回?cái)?shù)據(jù)集的所有元素,這通常會(huì)在使用filter或者其它操作后,返回一個(gè)足夠小的數(shù)據(jù)子集再使用

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

scala> rdd1.collect
res2: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

3.count

返回?cái)?shù)據(jù)集的元素個(gè)數(shù)

scala> val rdd1 = sc.makeRDD(1 to 10)
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[4] at makeRDD at :24

scala> rdd1.count
res4: Long = 10

4.first

返回?cái)?shù)據(jù)集的第一個(gè)元素(類似于take(1))

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

scala> rdd1.first
res5: Int = 1

5.take

返回一個(gè)數(shù)組,由數(shù)據(jù)集的前n個(gè)元素組成。注意此操作目前并非并行執(zhí)行的,而是driver程序所在機(jī)器

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

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

6.takeSample(withReplacement,num,seed)

withReplacement:結(jié)果中是否可重復(fù)
num:取多少個(gè)
seed:隨機(jī)種子
返回一個(gè)數(shù)組,在數(shù)據(jù)集中隨機(jī)采樣num個(gè)元素組成,可以選擇是否用隨機(jī)數(shù)替換不足的部分,seed用于指定的隨機(jī)數(shù)生成器種子
原理
takeSample()函數(shù)和sample函數(shù)是一個(gè)原理,但是不使用相對(duì)比例采樣,而是按設(shè)定的采樣個(gè)數(shù)進(jìn)行采樣,同時(shí)返回結(jié)果不再是RDD,而是相當(dāng)于對(duì)采樣后的數(shù)據(jù)進(jìn)行collect(),返回結(jié)果的集合為單機(jī)的數(shù)組

scala> val rdd1 = sc.makeRDD(1 to 10)
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[20] at makeRDD at :24

scala> rdd1.takeSample(true,4,10)
res19: Array[Int] = Array(10, 10, 2, 3)

7.takeOrdered

takeOrdered和top類似,只不過(guò)以和top相反的順序返回元素。
top默認(rèn)倒序,taskOrdered默認(rèn)正序
top方法其實(shí)就是調(diào)用的taskOrdered,然后反轉(zhuǎn)的結(jié)果

def top(num: Int)(implicit ord: Ordering[T]): Array[T] = withScope {
    takeOrdered(num)(ord.reverse)
  }
scala> val rdd1 = sc.makeRDD(1 to 10)
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[23] at makeRDD at :24

scala> rdd1.top(5)
res22: Array[Int] = Array(10, 9, 8, 7, 6)

scala> rdd1.takeOrdered(5)
res23: Array[Int] = Array(1, 2, 3, 4, 5)

8.saveAsTextFile

saveAsTextFile用于將RDD以文本文件的格式存儲(chǔ)到文件系統(tǒng)中

val conf = new SparkConf()
      .setAppName("saveFile")
      .setMaster("local[*]")

val sc = new SparkContext(conf)

val rdd1: RDD[Int] = sc.parallelize(1 to 10)

rdd1.repartition(1).saveAsTextFile("/tmp/fff")

9.saveAsSequenceFile

saveAsSequenceFile用于將RDD以SequenceFile的文件格式保存到HDFS上。使用方法和saveAsTextFile類似

10.saveAsObjectFile

saveAsObjectFile用于將RDD中的元素序列化成對(duì)象,存儲(chǔ)到文件中。使用方法和saveAsTextFile類似

11.countByKey

對(duì)(K,V)類型的RDD有效,返回一個(gè)(K,Int)對(duì)的map,表示每一個(gè)可以對(duì)應(yīng)的元素個(gè)數(shù)

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

scala> rdd1.countByKey
res1: scala.collection.Map[String,Long] = Map(B -> 2, A -> 2, C -> 1)

12.foreach

在數(shù)據(jù)集的每一個(gè)元素上,運(yùn)行函數(shù)func,t通常用于更新一個(gè)累加器變量,或者和外部存儲(chǔ)系統(tǒng)做交互

scala> val rdd1 = sc.makeRDD(Array(("A",0),("A",2),("B",1),("B",2),("C",3)))
rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[9] at makeRDD at :24

scala> rdd1.collect.foreach(println(_))
(A,0)
(A,2)
(B,1)
(B,2)
(C,3)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站名稱:Spark常用的action算子-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/dcjigh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部