spark算子_十、Spark之詳解Action類算子

常用Action類算子列表

c6e6ca8a5b661297099c03cc10761afb.png
  • reduce(func): 通過func函數來對RDD中所有元素進行聚合運算,先運算分區內數據,再運算分區間數據。
scala> val rdd1 = sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[4] at makeRDD at :24# 對1到100進行求和scala> rdd1.reduce(_+_)res4: Int = 5050
  • collect(): 在驅動程序Driver中或存儲到HDFS等存儲工具中,以數組的形式返回數據集的所有元素。
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[5] at makeRDD at :24scala> rdd1.collect()res5: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  • count(): 返回RDD中元素的個數
scala> val rdd1 = sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[6] at makeRDD at :24scala> rdd1.count()res6: Long = 100
  • first(): 返回RDD中的第一個元素
scala> val rdd1 = sc.makeRDD(5 to 20)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[7] at makeRDD at :24scala> rdd1.first()res7: Int = 5
  • take(num): 返回RDD中前num個元素組成的數據,當num=1時,相當于first()
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[8] at makeRDD at :24scala> rdd1.take(5)res8: Array[Int] = Array(1, 2, 3, 4, 5)
  • takeOrdered(n): 返回原RDD排序(默認升序排)后,前n個元素組成的數組。
scala> val rdd1 = sc.makeRDD(Array(1,4,6,2,5,8,3,6,9))rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[9] at makeRDD at :24scala> rdd1.takeOrdered(5)res9: Array[Int] = Array(1, 2, 3, 4, 5)
  • aggregate(zeroValue)(seqOp, combOp): 與key-value類型RDD的轉換算子aggregateByKey類似,同樣是三個參數:初始值zeroValue,分區內函數seqOp,分區間函數combOp,只不過它是一個action算子,觸發執行。
scala> val rdd1 = sc.makeRDD(Array(1,2,3,4,5,6),2)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[11] at makeRDD at :24scala> import scala.math._import scala.math._scala> rdd1.aggregate(4)(max(_,_),_+_)res10: Int = 14
  • countByKey(): 前面count執行算子是計算RDD中元素個數,countByKey是針對(K,V)類型的RDD,返回一個(K,Int)類型的map,表示每一個key對應的元素個數。
scala> val rdd1 = sc.parallelize(Array(("a",100),("a",200),("a",300),("b",1),("b",10),("c",1000)))rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[12] at parallelize at :27# Key為"a"的有3個,key為"b"的有兩個,key為以的有"1"個,與value無關scala> rdd1.countByKey()res11: scala.collection.Map[String,Long] = Map(b -> 2, a -> 3, c -> 1)
  • countByValue(): 對RDD中的(k,v)整體進行計數
scala> val rdd1 = sc.parallelize(Array(("a",100),("a",200),("a",200),("b",10),("b",10),("c",1000)))rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[15] at parallelize at :27scala> rdd1.countByValue()res12: scala.collection.Map[(String, Int),Long] = Map((c,1000) -> 1, (a,200) -> 2, (b,10) -> 2, (a,100) -> 1)
  • foreach(func): 遍歷原RDD元素經過func函數運算過后的結果集
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[19] at makeRDD at :27scala> rdd1.foreach(println)12345678910
  • foreachPartition(func): 按分區遍歷原RDD元素經過func函數運算過后的結果, 尤其在這里有插入數據的動作時,需要頻繁地創建連接與關閉連接,所以一個分區一個分區的處理效率高,減少gc
scala> val rdd1 = sc.makeRDD(1 to 10, 3)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[23] at makeRDD at :27# 一個分區只創建一次連接scala> rdd1.foreachPartition(iter => {println("打開數據庫連接");iter.foreach(x=>{println("拼拉sql, 插入數據庫");x});println("關閉數據庫連接")})打開數據庫連接拼拉sql, 插入數據庫拼拉sql, 插入數據庫拼拉sql, 插入數據庫關閉數據庫連接打開數據庫連接拼拉sql, 插入數據庫拼拉sql, 插入數據庫拼拉sql, 插入數據庫拼拉sql, 插入數據庫關閉數據庫連接打開數據庫連接拼拉sql, 插入數據庫拼拉sql, 插入數據庫拼拉sql, 插入數據庫關閉數據庫連接

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532249.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 庫函數 劫持,Linux hook技術之-Ring3下動態鏈接庫.so函數劫持

劫持普通函數當然沒有什么意思了!我們要劫持的是系統函數!我們知道,Unix操作系統中對于GCC而言,默認情況下,所編譯的程序中對標準C函數(fopen、printf、execv家族等等函數)的鏈接,都是通過動態鏈接方式來鏈…

await原理 js_「速圍」Node.js V14.3.0 發布支持頂級 Await 和 REPL 增強功能

本周,Nodejs v14.3.0 發布。這個版本包括添加頂級 Await、REPL 增強等功能。REPL 增強通過自動補全改進對 REPL 的預覽支持,例如,下圖中當輸入 process.ver 之后,不需要輸入剩下的實際內容,它幫我們生成了自動補全的輸…

在linux安裝requests庫命令,在Linux--Ubuntu18.04環境下安裝requests庫

之前在服務器上裝過requests庫,但是記憶中花了好大的力氣才成功,現在因為一次意外,服務器重裝系統,現在這些亂七八糟的庫又要重裝一遍,與上次不同的是,這次我裝一遍就成功了。現在分享一下成功的經歷。Pyth…

linux輸入ls后不顯示_零基礎學習之Linux基礎命令小結

安裝完重啟后,沒有像sery所說在圖形界面崩潰了,由于我沒有安裝X-WINDOWS而是直接進入了文本界面。如果你想做linux管理的話,最好在文本界面下工作,這樣會適應如下圖:第一行顯示的是我們所安裝的linux是Red Hat 企業4第二行顯示的是…

redhat enterprise linux 哪個版本好,Red Hat Enterprise Linux 版本顯示中(Santiago)是啥意思?...

樓主的邏輯還有問題。1、linux跟windows都是一種操作系統,但是它用的分區格式是ext3的,ntfs和fat都不合適。安裝過程中你可以自己選擇刪除現有分區創建新分區,但如果你不了解,很可能把所有的分區都清了。2、redhat分區多大合適看你…

.gitignore文件_【第1739期】為Git倉庫里的.idea文件夾正名

前言.idea該不該提交到代碼倉庫中呢?你的意見呢?今日早讀文章由《Flask Web開發》作者李輝分享。正文從這開始~~在網絡上,我曾多次看到人們對于Git倉庫中的.idea文件夾的偏見。最近的一次是在某個博客中技術專家對于志…

監控linux時間不對,shell 計算故障時間 配合web監控

#!/bin/bash#checkfail.log 為SHELL監控網站時間存放的日志文件 https://blog.51cto.com/junhai/2437965fail_time(){starttimetail -n 1000 checkfail.log |grep "$url"|grep "第1次"|tail -n 3|head -n 1|awk {print $1, $2} #取網站掛掉的時間endtimet…

linux redis清空數據恢復,Redis數據恢復--誤刪數據后一次嚇尿的經歷

1、起因,一個flushdb命令因為誤操作,輸入了一個flushdb命令,導到redis里0號庫里的數據全部清空,OMG,這里有不少重要信息,如果被領導知道,必開除2、appendonly留有生機仔細想想,當時數…

c語言 枚舉類型 uint32_淺談C語言枚舉類型 | 附自創用法分享

經濟學家說過,路邊是不會有100元的;但如果有,你還是要撿起來。同理,在貌似萬物免費的網絡時代,你是很難找到有針對性的好資料;但是如果有,希望你能認真學習吸收。比如筆者今天寫的這一篇一今天這…

linux在bin下加入ssh,移植?ssh?到開發板

2》編譯/home/arm下新建目錄sshwork,并且將源碼復制到該目錄下mkdir /home/arm/sshworkcp zlib-1.2.3.tar.gz openssl-0.9.8d.tar.gz openssh-4.6p1.tar.gz/home/arm/sshwork/home/arm/sshwork下新建目錄lib,用來保存生成的庫文件。mkdir /home/arm/sshw…

java pdf增刪改查_如何利用Java代碼操作索引庫?

今天是劉小愛自學Java的第161天。感謝你的觀看,謝謝你。學習計劃安排如下:學了幾天的Elasticserch,但都是它本身的知識點,如何通過Java語言去操作它呢?這就好比以前學數據庫,在數據庫工具中通過sql語句也能…

linux shell 第幾行,Linux shell 獲得字符串所在行數及位置

shell 獲得字符串所在行數及位置01 獲取字符串所在的行數方式一:用grep -n[rootroot]# cat testapplebitcreatedelectexeflowgood[rootroot]# cat test | grep -n exe5:exe[rootroot]# cat test | grep -n exe | awk -F ":" {print $1}5方式二&#xff1a…

sublime text3 怎么配置、運行python_SublimeText3按ctrl+b執行python無反應

最后更新時間:2017-09-14 現象: 在Sublime中打開.py文件,按”ctrlb”執行時無反應。點擊工具->編譯系統中已經有且識別到Python,但執行”run(ctrlshiftb)”時無反應,Sublime左下角提示”No B…

linux 火鍋平臺,“定制版火鍋”來襲,持續創新才能永葆活力

原標題:“定制版火鍋”來襲,持續創新才能永葆活力5月1日,重慶涪陵紅酒小鎮的一家轉轉火鍋店,推出“五一”定制版火鍋免費請游客品嘗。廣西的螺螄粉、貴州的折耳根、湖南臭豆腐、福建烏龍茶、重慶榨菜、河南胡辣湯、陜西老陳醋、海…

internetreadfile讀取數據長度為0_YOLOV3的TensorFlow2.0實現,支持在自己的數據集上訓練...

GitHub鏈接:calmisential/YOLOv3_TensorFlow2?github.com我主要參考了yolov3的一個keras實現版本:qqwweee/keras-yolo3?github.com目前支持在PASCAL VOC 2012數據集上訓練和自定義數據集上訓練,具體的訓練過程可參考項目倉庫中的README文檔…

c語言用鏈表對學生成績排序,學生成績排序和平均分計算利用c語言鏈表的創建插入刪除.doc...

#define NULL 0#define LEN sizeof(struct student)struct student{long num;float score;struct student *next;};int n;struct student *creat(void)//創建鏈表{struct student *head;struct student *p1,*p2;n0;p1p2(struct student*)malloc(LEN);scanf("%ld,%f",…

深井軟巖巷道群支護技術與應用_深井軟巖巷道深淺孔帷幕注漿技術

一、成果內容1.基本原理對失修巷道進行刷擴、支護,滿足使用斷面后進行幫頂噴漿、底板整平,先底板注漿,然后幫、頂注漿。錨架充支護巷道直接底板整平后,先底板后幫、頂注漿。通過全斷面深淺孔聯合注水泥漿進行巷道加固,…

店鋪咨詢系統c語言,課內資源

1 題目介紹1.1 問題描述出于不同目的的旅客對交通工具和交通路徑有不同的要求。例如,因公出差的旅客希望在旅途中的時間盡可能短,出門旅游的游客則期望旅費盡可能省,而老年旅客則要求中轉次數最少。編制一個交通咨詢系統程序,為旅客提供最優決策的交通咨詢。1.2 需求分析提供對…

f分布表完整圖_【教育統計答疑】如何理解正態分布、均值分布、^2分布、t分布和F分布...

許多教育統計的初學者都表示這幾個分布感到學起來非常吃力,結合最近上課的體會以及答疑的情況,覺得很有必要在這里簡單地對這部分內容進行澄清和梳理,以助理解。首先,“為什么要學習這幾個分布”可能是許多人糾結的問題&#xff0…

c語言第一章考試題及答案,C語言考試題庫及答案整理版.doc

C語言考試題庫及答案整理版.docC語言理論上機考試選擇題部分(共200題)1、下面程序的輸出是___D______#includevoid main(){ int k11;printf("k%d,k%o,k%x\n",k,k,k);}A) k11,k12,k11 B) k11,k13,k13C) k11,k013,k0xb D) k11,k13,kb2、在下列選項中,不正確的賦值語句是…