spark算子_Spark篇之持久化算子

一、前述

Spark中控制算子也是懶執行的,需要Action算子觸發才能執行,主要是為了對數據進行緩存。

控制算子有三種,cache,persist,checkpoint,以上算子都可以將RDD持久化,持久化的單位是partitioncache和persist都是懶執行的。必須有一個action類算子觸發執行。checkpoint算子不僅能將RDD持久化到磁盤,還能切斷RDD之間的依賴關系。

二、具體算子

1、 cache

默認將RDD的數據持久化到內存中cache是懶執行

chche () = persist()=persist(StorageLevel.Memory_Only)

2、persist(可以指定持久化的級別)

1eb40875efba7238c2464926d927a79b.png

解釋:

1、MEMORY_AND_DISK 意思是先往內存中放數據,內存不夠再放磁盤

2、最常用的是MEMORY_ONLY和MEMORY_AND_DISK。”_2”表示有副本數。

3、選擇的原則是:首先考慮內存,然后考慮序列化之后再放入內存,最后考慮內存加磁盤。

4、盡量避免使用“_2”和DISK_ONLY級別。

5、deserialized是不序列化的意思。

注意事項:

1、cache和persist都是懶執行,必須有一個action類算子觸發執行。

2、cache和persist算子的返回值可以賦值給一個變量,在其他job中直接使用這個變量就是使用持久化的數據了。持久化的單位是partition。

3、cache和persist算子后不能立即緊跟action算子。

錯誤:

rdd.cache().count() 返回的不是持久化的RDD,而是一個數值了

3、 Checkpoint(對Lineage非常長時使用)

1、概念和特征:

不僅可以將數據持久化到磁盤,還可以切斷RDD之間的依賴關系,checkpoint也是懶執行。

Checkpoin不僅存儲結果,還會存儲邏輯,還可以存儲元數據。

Persisit切斷不了RDD的依賴關系。

2、checkpoint 的執行原理:

(1).Spark job執行完之后,spark會從finalRDD從后往前回溯。

(2)當回溯到對某個RDD進行了checkpoint,會對這個RDD標記。

(3)回溯完成之后,Spark會重新計算標記RDD的結果,然后將結果保存到Checkpint目錄中。

3、優化checekpoint

  • 因為最后是要觸發當前application的action算子,所以在觸發之前加一層cache操作,一樣會往前執行cache操作,實現對數據的cache ,所以考慮將cache優化到checkpoin的優化流程里。
  • 對RDD執行checkpoint之前,最好對這個RDD先執行cache,這樣新啟動的job(回溯完成之后重新開的job)只需要將內存中的數據(cache緩存好的checkpoint那個點的數據)拷貝到HDFS上就可以。
  • 省去了重新計算這一步,不需要重頭開始來走到checkpoint這個點了。

總結:

持久化的最小單位是partition!!!

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

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

相關文章

java g1 gc ref proc_深入理解垃圾收集器的G1及日志分析

盡管Hotspot 最新的垃圾回收器G1是在2006年推出的。但是G1從推行至今的市場反響來看,但現在足以證明這款垃圾收集器是經得起考驗的,從java9開始,就默認為G1垃圾收集器。G1是一款面向服務端應用的垃圾收集器。HotSpot開發團隊賦予它的使命是(在…

python爬取嗶哩嗶哩視頻_Python實現視頻爬取下載

注:源內容來自公眾號【python學習開發】一般情況下我們使用爬蟲更多的是對數據或者圖片進行爬取,今天在這里和大家分享一下關于使用爬蟲技術來進行視頻下載的方法,不僅可以方便的下載一些體積小的視頻,針對大容量的視頻下載同樣試用。接下來我們來介紹此次爬取視頻過…

java約瑟夫環pta上_cdoj525-猴子選大王 (約瑟夫環)

約瑟夫斯問題問題有時候也被描述成猴子選大王問題,題目如下.(最后會貼上約瑟夫問題的來歷) 一群猴子排成一圈,按1,2,…,n依次編號. 然后從第1只開始數,數到第m只,把它踢出圈,從它后面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最后只剩下一只猴子為止,那只猴…

java++記錄+運行_記錄java+testng運行selenium(三)---xml、ini、excel、日志等配置

一: ini文件ini目前只用處存儲瀏覽類型及需要打開的url,ini文件放在configs文件夾下面。讀取ini代碼如下:1 packagetoolskit.documents;23 import java.io.*;4 import java.util.*;56 /**7 * ClassName: ReadIni8 * Author: DingDong9 * D…

python字符串前面加f什么意思_Python 字符串前面加u,r,b,f的含義

1、字符串前加 u例:u"我是含有中文字符組成的字符串。"作用:后面字符串以 Unicode 格式 進行編碼,一般用在中文字符串前面,防止因為源碼儲存格式問題,導致再次使用時出現亂碼。2、字符串前加 r例&#xff1a…

mysql居左查詢abcd_MySql速查手冊

索引定義索引用來快速地尋找那些具有特定值的記錄,所有MySQL索引都以B樹的形式保存。就像是數據的目錄。索引類型唯一索引主鍵索引B-Tree普通索引R-Tree聯合索引Hash全文索引FullText在mysql中fulltext索引只針對myisam生效。符合索引對于創建的多列索引(復合索引)&…

和python哪個容易胖_為什么有些人特別容易胖?

7種人,最容易被肥胖盯上,其中有你嗎?胖,總是來得猝不及防,肥肉也總是不知不覺地長出來……許多胖友對自己的身材老摸不著腦,其實,長胖都是有跡可循的!正如下面這7類人,就…

loadrunner 錯誤: 無法找到 java.exe_LoadRunner錯誤及解決方法總結

1. error:missing newline in d:\loadrunner\name.dat場景執行時報error:missing newline in d:\loadrunner\name.dat第二次執行不報兩個解決辦法:第一:如果參數不是很多的話,不要打開記事本去編輯參數,就直接在LR提供的參數的表格…

gif透明背景動畫_【超實用干貨! 】iPad上的動畫App大推薦

作者/立夏編輯/彼方大家好,我是立夏。大概在兩年前吧我為大家寫過幾款動畫APP的評測,這一次我也想給大家推薦一些我的新寵,供大家參考。我在這里就不過多提及如Animation Desk、Procreate或是Callipeg之類知名度相對更高一些的動畫App了&…

python框架是干什么的_django框架是干什么的

django(Python Web 框架)Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟件。…

iphone如何信任軟件_【手機軟件】千禾影院:全新觀影神器,支持安卓+iOS,最新、最全、高清、免費!...

Hello,大家好,我是春哥!每天記得打卡哦!感謝每一位小伙伴們的關注和支持!免責聲明大部分資源來源于網絡,僅供學習和交流使用,如有侵權請聯系我們刪除。每期文章末尾都會有關鍵詞,在公眾號發消息…

Java小魔女芭芭拉_沉迷蘑菇不可自拔,黏土人《小魔女學園》蘇西·曼芭芭拉 圖賞...

GOOD SMILE出品的黏土人系列手辦新作——《小魔女學園》蘇西曼芭芭拉,已經開始接受預定了。這款黏土人的原型師是來自中國上海的陳天,售價4167日元,預計2018年4月發售。蘇西是主人公亞可的室友,她是從東南亞來的身份不明的魔女。熱…

java int相除向上取整_java實戰項目常用類,Date、Calendar、BigDecimal、Math、UUID

Java開發中經常用到的類和方法,以下主要就日期是時間處理、金融數字處理、數學計算、隨機數、MD5加密等。java.util.Date類java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。日期時間的本質是一個long,它…

python四級中考有用的_一位中考生家長的后悔藥:考前30多天,千萬別做這7件傻事...

中考即將來臨,考后必定是幾家歡樂幾家愁,有慶幸的、有后悔的。中考前的幾個月到底應該怎么過?考前考中需要注意什么?家長做哪些事情是畫蛇添足的。今天給大家推薦一位“中考失敗”學子父親的自白,其中有對優秀兒子的心疼&#xf…

R語言中dim函數_R語言--向量化計算(apply族函數)

R語言最優秀的是它的向量化編程,這其中apply族函數扮演了非常重要的角色。apply族函數是由apply、sapply、lapply、mapply、tapply等函數組成的。熟練使用apply族函數,能夠簡化程序,提高代碼的運算速度。軟件&環境win10 64bitR 3.6.1appl…

php+mysql記事本_一個簡單記事本php操作mysql輔助類創建

//SqlHelper.class.phpconnmysql_connect($this->host,$this->user,$this->passwrd); if(!$this->conn){ die("連接失敗".mysql_error()); } mysql_select_db($this->db); mysql_query("set names utf8"); } //增刪改 function execute_dml…

python init方法做了什么_Python類方法、__new__方法和__init__方法分別是什么

Python類方法、__new__方法和__init__方法分別是什么發布時間:2020-09-03 15:24:06來源:億速云閱讀:104作者:小新這篇文章主要介紹Python類方法、__new__方法和__init__方法分別是什么,文中介紹的非常詳細,…

谷歌瀏覽器中文版_中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一 / 谷歌發布地圖時光機:百年前,你家街道啥樣?/ AI看圖說話首超人類...

關注我們了解計算機視覺最新動態 !動態先覽1中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一2谷歌發布地圖「時光機」:100年前,你家街道長啥樣?3仿真環境跟車2分鐘,就讓自動駕駛系統撞上馬路牙子&#…

300小時成為java程序員_直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!...

原標題:直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!今天給大家分享一位Java程序員小伙去阿里應聘的經歷!從Java開發要掌握的技術來講,前面已經說得差不多了。我主要想從面試者的角度談一談看法。如果是我面試,就給…

python 判斷每月最后一天_python獲取某年中每個月的第一天和最后一天的兩種方法...

搜索關鍵字:python get every first day of month參考解答:方法一:>>> import calendar>>> calendar.monthrange(2002,1)(1, 31)>>> calendar.monthrange(2008,2)(4, 29)>>> calendar.monthrange(2100,2…