【趙渝強老師】Spark RDD的緩存機制

在這里插入圖片描述

Spark RDD通過persist方法或cache方法可以將計算結果的緩存,但是并不是這兩個方法被調用時立即緩存,而是觸發后面的action時,該RDD才會被緩存在計算節點的內存中并供后面重用。下面是persist方法或cache方法的函數定義:

def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
def cache(): this.type = persist()
視頻講解如下

【趙渝強老師】Spark RDD的緩存機制

通過函數的定義發現,cache最終也是調用了persist方法,默認的存儲級別都是僅在內存存儲一份,Spark在object StorageLevel中定義了緩存的存儲級別。下面是在StorageLevel中的定義的緩存級別。

val NONE = new StorageLevel(false, false, false, false)
val DISK_ONLY = new StorageLevel(true, false, false, false)
val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2)
val MEMORY_ONLY = new StorageLevel(false, true, false, true)
val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2)
val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false)
val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2)
val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2)
val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false)
val MEMORY_AND_DISK_SER_2=new StorageLevel(true, true, false, false, 2)
valOFF_HEAP = new StorageLevel(true, true, true, false, 1)

需要說明的是,使用RDD的緩存機制,數據可能丟失;或者會由于內存的不足而造成數據被刪除。可以通過使用RDD的檢查點機制了保證緩存的容錯,即使緩存丟失了也能保證計算的正確執行。

下面是使用RDD緩存機制的一個示例。這里使用RDD讀取一個大的文件,該文件中包含918843條記錄。通過Spark Web Console可以對比出在不使用緩存和使用緩存時,執行效率的差別。
(1)讀取一個大文件。

scala> val rdd1 = sc.textFile("/root/temp/sales")

(2)觸發一個計算,這里沒有使用緩存。

scala> rdd1.count

(3)調用cache方法標識該RDD可以被緩存。

scala> rdd1.cache

(4)第二次觸發計算,計算完成后會將結果緩存。

scala> rdd1.count

(5)第三次觸發計算,這里會直接從之前的緩存中獲取結果。

scala> rdd1.count

(6)訪問Spark的Web Console觀察這三次count計算的執行時間,可以看成最后一次count計算只耗費了98ms,如下圖所示。
在這里插入圖片描述

《從大數據到云原生系列課程》

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

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

相關文章

設計模式相關知識點

目錄 設計模式 設計模式 代碼設計原則 設計模式 設計模式 干掉if...else,最好用的3種設計模式! | 小傅哥 bugstack 蟲洞棧 代碼設計原則-CSDN博客 23種設計模式-CSDN博客 策略模式(Strategy Pattern)-CSDN博客 責任鏈模式…

ShenNiusModularity項目源碼學習(9:項目結構)

ShenNiusModularity源碼主要有11個project(其實還有officialweb、test兩個文件夾,大致有4、5個project,但看著跟主要項目代碼沒太大關系,暫時不管),這11個project的依賴關系如下圖所示,其中最下…

ubuntu22.4搭建單節點es8.1

下載對應的包 elasticsearch-8.1.1-linux-x86_64.tar.gz 創建es租戶 groupadd elasticsearc useradd elasticsearch -g elasticsearch -p elasticsearch chmod uw /etc/sudoers chmod -R elasticsearch:elasticsearch elasticsearch 修改配置文件 vim /etc/sysctl.conf vm…

Docker 部署 ollama + DeepSeek

拉取并運行 Ollama Docker 鏡像 使用以下命令從 Docker Hub 拉取 Ollama 鏡像并運行容器: docker run -d -p 11434:11434 --name ollama ollama/ollama -d:以守護進程模式運行容器,即讓容器在后臺運行。-p 11434:11434:將容器內…

解決DeepSeek服務器繁忙的有效方法

全球42%的企業遭遇過AI工具服務器過載導致內容生產中斷(數據來源:Gartner 2025)。當競品在凌晨3點自動發布「智能家居安裝指南」時,你的團隊可能正因DeepSeek服務器繁忙錯失「凈水器保養教程」的流量黃金期?。147SEO智能調度系統…

Discuz! X3.5 根目錄權限設置

在 Discuz! X3.5 中,根目錄的權限設置是確保網站安全性和功能正常運行的關鍵。如果權限設置不當,可能會導致文件無法訪問、安全問題(如文件被篡改)或功能異常。以下是關于 Discuz! X3.5 根目錄權限設置的詳細說明和建議: 1. 根目錄位置 Discuz! X3.5 的根目錄通常是網站的…

【C++八股】內存對?

內存對齊是指編譯器按照特定規則安排數據在內存中的存儲位置,以提高程序的執行效率和可移植性。 內存對齊的原因: 1. 性能優化: 現代處理器通常要求數據在內存中按照特定的邊界對齊,以提高內存訪問效率。 如果數據未對齊&#x…

【有啥問啥】DeepSeek 技術原理詳解

DeepSeek 技術原理詳解 DeepSeek 是一款具有突破性技術的大型語言模型,其背后的技術原理涵蓋了多個方面,以下是對其主要技術原理的詳細介紹: 架構創新 多頭潛在注意力機制(MLA) 傳送門鏈接: DeepSeek V3中的Multi-…

ML.NET庫學習008:使用ML.NET進行心臟疾病預測模型開發

文章目錄 ML.NET庫學習008:使用ML.NET進行心臟疾病預測模型開發1. 項目主要目的和原理2. 項目概述實現的主要功能:主要流程步驟:關鍵技術: 3. 主要功能和步驟數據加載與路徑處理模型訓練與評估模型保存與加載 4. 代碼中的數據結構…

FFmpeg 全面知識大綱梳理

1. FFmpeg 簡介 FFmpeg 是什么: 一個開源的多媒體處理框架,用于處理音頻、視頻和流媒體。支持多種格式和編解碼器。提供命令行工具和庫(如 libavcodec, libavformat, libavfilter 等)。主要功能: 格式轉換編解碼流媒體處理音視頻剪輯、合并、分離添加濾鏡、特效壓縮與優化…

人工智能基礎之數學基礎:01高等數學基礎

函數 極限 按照一定次數排列的一列數:“,“,…,"…,其中u 叫做通項。 對于數列{Un}如果當n無限增大時,其通項無限接近于一個常數A,則稱該數列以A為極限或稱數列收斂于A,否則稱數列為發散, 極限值 左…

從零搭建微服務項目Base(第5章——SpringBoot項目LogBack日志配置+Feign使用)

前言: 本章主要在原有項目上添加了日志配置,對SpringBoot默認的logback的配置進行了自定義修改,并詳細闡述了xml文件配置要點(只對日志配置感興趣的小伙伴可選擇直接跳到第三節),并使用Feign代替原有RestT…

【關于電商數據采集】電商數據采集的市場應用及發展

## 電商數據采集應用行業介紹 **一、 行業概述** 電商數據采集應用行業是指利用技術手段,自動或半自動地從電商平臺、社交媒體等渠道獲取商品信息、用戶評論、銷售數據等信息的行業。隨著電子商務的蓬勃發展,數據已成為電商企業的重要資產,…

c++進階———繼承

1.引言 在一些大的項目中,我們可能要重復定義一些類,但是很麻煩,應該怎么辦呢?舉個簡單的例子,我要做一個全校師生統計表,統計學號,教師編號,姓名,年齡,電話…

Golang學習筆記_34——組合模式

Golang學習筆記_31——原型模式 Golang學習筆記_32——適配器模式 Golang學習筆記_33——橋接模式 文章目錄 一、核心概念1. 定義2. 解決的問題3. 核心角色4. 類圖 二、特點分析三、適用場景1. 文件系統2. 圖形界面3. 組織架構 四、代碼示例(Go語言)五、…

【部署優化篇三】《DeepSeek邊緣計算實戰:把目標檢測模型塞進樹莓派,讓AI在巴掌大的設備上“開天眼“》

“誰說只有超級計算機才能跑AI?今天咱們就要在樹莓派上玩轉DeepSeek目標檢測,讓這個巴掌大的小盒子變成會‘看’世界的智能終端!” 本文手把手教你從零開始,把最潮的目標檢測模型塞進樹莓派。全程高能預警,建議準備好你的樹莓派4B/5和散熱風扇,咱們這就開啟邊緣計算的魔法…

Django中數據庫遷移命令

在 Django 中,數據庫遷移是確保數據庫結構與 Django 模型定義保持一致的重要過程。以下是 Django 中常用的數據庫遷移命令: 1. python manage.py makemigrations 功能:此命令用于根據 Django 項目的模型文件(models.py&#xff…

2023年河北省職業院校技能大賽網絡系統管理賽項樣題解法

? 有問題請留言或主頁私信咨詢 配置文件有部分測試時的冗余配置無視即可。 解法只有大致解法,并不完整。請參考配置,自己補全 基礎配置 1.所有交換機和無線控制器開啟SSH服務,用戶名密碼分別為admin、admin1234;密碼為明文類…

React之旅-02 創建項目

創建React項目,常用的方式有兩種: 官方提供的腳手架,官網:https://create-react-app.dev/。如需創建名為 my-app 的項目,請運行如下命令: npx create-react-app my-app 使用Vite包,官網&…

Visual Studio Code的下載安裝與漢化

1.下載安裝 Visual Studio Code的下載安裝十分簡單,在本電腦的應用商店直接下載安裝----注意這是社區版-----一般社區版就足夠用了---另外注意更改安裝地址 2.下載插件 重啟后就是中文版本了