国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PySpark RDD的緩存和Checkpoint

這篇具有很好參考價值的文章主要介紹了PySpark RDD的緩存和Checkpoint。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1. 前言

RDD之間進(jìn)行相互迭代計算(Transformation的轉(zhuǎn)換),當(dāng)執(zhí)行開啟后,新RDD的生成,代表老RDD的消息,RDD的數(shù)據(jù)只在處理的過程中存在,一旦處理完成,就不見了,所以RDD的數(shù)據(jù)是過程數(shù)據(jù)。

RDD數(shù)據(jù)是過程數(shù)據(jù)的這個特性可以最大化的利用資源,老舊的RDD沒用了就會從內(nèi)存中清理,給后續(xù)的計算騰出內(nèi)存空間。

PySpark RDD的緩存和Checkpoint
如上圖,rdd3被2次使用,第一次使用之后,其實(shí)rdd3就不存在了,在第二次使用的時候,只能基于RDD的血緣關(guān)系,從RDD1重新執(zhí)行,構(gòu)建出來RDD3,供RDD5使用。

2. RDD的緩存

Spark中提供了緩存API,可以讓我們通過調(diào)用API,將指定的RDD數(shù)據(jù)保留在內(nèi)存或者硬盤上。上述場景如果使用緩存API,RDD3就不會消失,第二次使用RDD3的時候就不會在通過血緣關(guān)系重新開始構(gòu)建出RDD3

# RDD3 被2次使用,可以加入緩存進(jìn)行優(yōu)化
rdd3.cache() 									# 緩存到內(nèi)存中.
rdd3.persist(StorageLevel.MEMORY_ONLY) 			# 僅內(nèi)存緩存
rdd3.persist(StorageLevel.MEMORY_ONLY_2)		# 僅內(nèi)存緩存,2個副本
rdd3.persist(StorageLevel.DISK_ONLY)			# 僅緩存硬盤上
rdd3.persist(StorageLevel.DISK_ONLY_2)			# 僅緩存硬盤上,2個副本
rdd3.persist(StorageLevel.DISK_ONLY_3)			# 僅緩存硬盤上,3個副本
rdd3.persist(StorageLevel.MEMORY_AND_DISK)		# 先放內(nèi)存,不夠放硬盤
rdd3.persist(StorageLevel.MEMORY_AND_DISK_2)	# 先放內(nèi)存,不夠放硬盤,2個副本
rdd3.persist(StorageLevel.OFF_HEAP)				# 堆放內(nèi)存(系統(tǒng)內(nèi)存)
# 如上API,自行選擇使用即可
# 一般建議使用rdd3.persist(StorageLevel.MEMORY_AND_DISK)
# 如果內(nèi)存比較小的集群,建議使用rdd3.persist(StorageLevel.DISK_ONLY) 或者別用緩存了 用CheckPoint

# 主動清理緩存的API
rdd.unpersist() 

PySpark RDD的緩存和Checkpoint
如上圖,RDD是將自己分區(qū)的數(shù)據(jù),每個分區(qū)自行將其數(shù)據(jù)保存在其所在的Executor內(nèi)存和硬盤上,這就是分散存儲

緩存技術(shù)可以將過程RDD數(shù)據(jù),持久化保存到內(nèi)存或者硬盤上,但是這個保存在設(shè)定上是認(rèn)為不安全的,存在丟失的風(fēng)險,所以緩存有一個特點(diǎn)就是保存RDD之間的血緣關(guān)系。
一旦緩存丟失,可以基于血緣關(guān)系的記錄,重新計算這個RDD的數(shù)據(jù)。

緩存一般是如果丟失的?

  • 在內(nèi)存中的存儲是不安全的,比如斷電\計算任務(wù)內(nèi)存不足,把緩存清理給計算讓路
  • 硬盤中因?yàn)橛脖P的損壞也是可能丟失的

3. RDD的CheckPoint

Spark中Checkpoint技術(shù),也是將RDD的數(shù)據(jù)保存起來,但是它只支持硬盤存儲,并且它被設(shè)計認(rèn)為是安全的,不保留血緣關(guān)系。

PySpark RDD的緩存和Checkpoint

如上圖,Checkpoint存儲的RDD數(shù)據(jù)是集中收集各個分區(qū)的數(shù)據(jù)進(jìn)行存儲,而緩存是分散存儲

緩存和Checkpoint的對比:

  1. CheckPoint不管分區(qū)數(shù)量多少,風(fēng)險都一樣。 緩存:分區(qū)越多,風(fēng)險越多
  2. CheckPoint支持寫入HDFS,緩存不行。HDFS是高可靠存儲,CheckPoint被認(rèn)為是安全的
  3. CheckPoint不支持內(nèi)存,緩存可以。緩存如果寫內(nèi)存 性能比 CheckPoint 要好一些
  4. CheckPoint因?yàn)樵O(shè)計是安全的,所以不保留血緣關(guān)系,而緩存則相反。

實(shí)現(xiàn):

# 設(shè)置CheckPoint第一件事情,選擇Checkpoint的保存路徑
# 如果Local模式,可以支持本地文件系統(tǒng),如果在集群運(yùn)行,千萬要用HDFS
sc.setCheckpointDir("hdfs://master:8020/output/11111")
# 用的時候,直接調(diào)用checkpoint算子即可,但是需要有action算子觸發(fā)
rdd.checkpoint()
rdd.count()

# TODO: 再次執(zhí)行count函數(shù), 此時從checkpoint讀取數(shù)據(jù)
rdd.count()

Checkpoint是一種重量級的使用,也就是RDD的重新計算成本很高的時候,我們采用Checkpoint比較合適,或者數(shù)據(jù)量很大的時候,采用Checkpoint比較合適。如果數(shù)據(jù)量小,或者RDD重新計算也是非??斓模苯邮褂镁彺婕纯伞?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-406419.html

**注意:**Spark中緩存和Checkpoint兩個API都不是action算子,所以需要后面跟action算子才能觸發(fā)。文章來源地址http://www.zghlxwxcb.cn/news/detail-406419.html

到了這里,關(guān)于PySpark RDD的緩存和Checkpoint的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python】PySpark 數(shù)據(jù)計算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )

    【Python】PySpark 數(shù)據(jù)計算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )

    RDD#sortBy 方法 用于 按照 指定的 鍵 對 RDD 中的元素進(jìn)行排序 , 該方法 接受一個 函數(shù) 作為 參數(shù) , 該函數(shù)從 RDD 中的每個元素提取 排序鍵 ; 根據(jù) 傳入 sortBy 方法 的 函數(shù)參數(shù) 和 其它參數(shù) , 將 RDD 中的元素按 升序 或 降序 進(jìn)行排序 , 同時還可以指定 新的 RDD 對象的 分區(qū)數(shù) ; RDD

    2024年02月14日
    瀏覽(18)
  • 【Python】PySpark 數(shù)據(jù)計算 ② ( RDD#flatMap 方法 | RDD#flatMap 語法 | 代碼示例 )

    【Python】PySpark 數(shù)據(jù)計算 ② ( RDD#flatMap 方法 | RDD#flatMap 語法 | 代碼示例 )

    RDD#map 方法 可以 將 RDD 中的數(shù)據(jù)元素 逐個進(jìn)行處理 , 處理的邏輯 需要用外部 通過 參數(shù)傳入 map 函數(shù) ; RDD#flatMap 方法 是 在 RDD#map 方法 的基礎(chǔ)上 , 增加了 \\\" 解除嵌套 \\\" 的作用 ; RDD#flatMap 方法 也是 接收一個 函數(shù) 作為參數(shù) , 該函數(shù)被應(yīng)用于 RDD 中的每個元素及元素嵌套的子元素

    2024年02月14日
    瀏覽(20)
  • 10-用PySpark建立第一個Spark RDD

    10-用PySpark建立第一個Spark RDD

    PySpark實(shí)戰(zhàn)筆記系列第一篇 Apache Spark的核心組件的基礎(chǔ)是RDD。所謂的RDD,即 彈性分布式數(shù)據(jù)集(Resiliennt Distributed Datasets) ,基于RDD可以實(shí)現(xiàn)Apache Spark各個組件在多個計算機(jī)組成的集群中進(jìn)行無縫集成,從而能夠在一個應(yīng)用程序中完成海量數(shù)據(jù)處理。 只讀不能修改 :只能通過

    2024年04月08日
    瀏覽(47)
  • Python大數(shù)據(jù)之PySpark(五)RDD詳解

    Python大數(shù)據(jù)之PySpark(五)RDD詳解

    為什么需要RDD? 首先Spark的提出為了解決MR的計算問題,諸如說迭代式計算,比如:機(jī)器學(xué)習(xí)或圖計算 希望能夠提出一套基于內(nèi)存的迭代式數(shù)據(jù)結(jié)構(gòu),引入RDD彈性分布式數(shù)據(jù)集,如下圖 為什么RDD是可以容錯? RDD依靠于依賴關(guān)系dependency relationship reduceByKeyRDD-----mapRDD-----flatMapRD

    2024年02月06日
    瀏覽(52)
  • Python大數(shù)據(jù)之PySpark(六)RDD的操作

    Python大數(shù)據(jù)之PySpark(六)RDD的操作

    函數(shù)分類 *Transformation操作只是建立計算關(guān)系,而Action 操作才是實(shí)際的執(zhí)行者* 。 Transformation算子 轉(zhuǎn)換算子 操作之間不算的轉(zhuǎn)換,如果想看到結(jié)果通過action算子觸發(fā) Action算子 行動算子 觸發(fā)Job的執(zhí)行,能夠看到結(jié)果信息 Transformation函數(shù) 值類型valueType map flatMap filter mapValue 雙值

    2024年02月04日
    瀏覽(44)
  • 【Python】PySpark 數(shù)據(jù)計算 ③ ( RDD#reduceByKey 函數(shù)概念 | RDD#reduceByKey 方法工作流程 | RDD#reduceByKey 語法 | 代碼示例 )

    【Python】PySpark 數(shù)據(jù)計算 ③ ( RDD#reduceByKey 函數(shù)概念 | RDD#reduceByKey 方法工作流程 | RDD#reduceByKey 語法 | 代碼示例 )

    RDD#reduceByKey 方法 是 PySpark 中 提供的計算方法 , 首先 , 對 鍵值對 KV 類型 RDD 對象 數(shù)據(jù) 中 相同 鍵 key 對應(yīng)的 值 value 進(jìn)行分組 , 然后 , 按照 開發(fā)者 提供的 算子 ( 邏輯 / 函數(shù) ) 進(jìn)行 聚合操作 ; 上面提到的 鍵值對 KV 型 的數(shù)據(jù) , 指的是 二元元組 , 也就是 RDD 對象中存儲的數(shù)據(jù)是

    2024年02月14日
    瀏覽(26)
  • 【Python】PySpark 數(shù)據(jù)輸入 ① ( RDD 簡介 | RDD 中的數(shù)據(jù)存儲與計算 | Python 容器數(shù)據(jù)轉(zhuǎn) RDD 對象 | 文件文件轉(zhuǎn) RDD 對象 )

    【Python】PySpark 數(shù)據(jù)輸入 ① ( RDD 簡介 | RDD 中的數(shù)據(jù)存儲與計算 | Python 容器數(shù)據(jù)轉(zhuǎn) RDD 對象 | 文件文件轉(zhuǎn) RDD 對象 )

    RDD 英文全稱為 \\\" Resilient Distributed Datasets \\\" , 對應(yīng)中文名稱 是 \\\" 彈性分布式數(shù)據(jù)集 \\\" ; Spark 是用于 處理大規(guī)模數(shù)據(jù) 的 分布式計算引擎 ; RDD 是 Spark 的基本數(shù)據(jù)單元 , 該 數(shù)據(jù)結(jié)構(gòu) 是 只讀的 , 不可寫入更改 ; RDD 對象 是 通過 SparkContext 執(zhí)行環(huán)境入口對象 創(chuàng)建的 ; SparkContext 讀取數(shù)

    2024年02月14日
    瀏覽(18)
  • 【Python】PySpark 數(shù)據(jù)計算 ① ( RDD#map 方法 | RDD#map 語法 | 傳入普通函數(shù) | 傳入 lambda 匿名函數(shù) | 鏈?zhǔn)秸{(diào)用 )

    【Python】PySpark 數(shù)據(jù)計算 ① ( RDD#map 方法 | RDD#map 語法 | 傳入普通函數(shù) | 傳入 lambda 匿名函數(shù) | 鏈?zhǔn)秸{(diào)用 )

    在 PySpark 中 RDD 對象 提供了一種 數(shù)據(jù)計算方法 RDD#map 方法 ; 該 RDD#map 函數(shù) 可以對 RDD 數(shù)據(jù)中的每個元素應(yīng)用一個函數(shù) , 該 被應(yīng)用的函數(shù) , 可以將每個元素轉(zhuǎn)換為另一種類型 , 也可以針對 RDD 數(shù)據(jù)的 原始元素進(jìn)行 指定操作 ; 計算完畢后 , 會返回一個新的 RDD 對象 ; map 方法 , 又

    2024年02月14日
    瀏覽(33)
  • Spark RDD 緩存機(jī)制

    Spark RDD 緩存是在內(nèi)存存儲RDD計算結(jié)果的一種優(yōu)化技術(shù)。把中間結(jié)果緩存起來以便在需要的時候重復(fù)使用,這樣才能有效減輕計算壓力,提升運(yùn)算性能。 當(dāng)對RDD執(zhí)行持久化操作時,每個節(jié)點(diǎn)都會將自己操作的RDD的partition持久化到內(nèi)存中,并且在之后對該RDD的反復(fù)使用中,直接

    2024年03月25日
    瀏覽(12)
  • SPARK--cache(緩存)和checkpoint檢查點(diǎn)機(jī)制

    rdd的特性 緩存和checkpoint 作用都是進(jìn)行容錯 rdd在計算是會有多個依賴,為了避免計算錯誤是從頭開始計算,可以將中間* 依賴rdd進(jìn)行緩存或checkpoint 緩存或checkpoint也叫作rdd的持久化 一般對某個計算特別復(fù)雜的rdd進(jìn)行持久化 緩存使用 緩存是將數(shù)據(jù)存儲在內(nèi)存或者磁盤上,緩存

    2024年01月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包