Spark處理過程-轉換算子和行動算子

(一)RDD的處理過程


? RDD經過一系列的“轉換”操作,每一次轉換都會產生不同的RDD,以供給下一次“轉換”操作使? ? ? ? 用,直到最后一個RDD經過“行動”操作才會真正被計算處理。

1.延遲。RDD中所有的轉換都是延遲的,它們并不會直接計算結果。相反,他們只是記住這些應用 ???到基礎數據集上的轉換動作。只有當發生要求返回結果給driver的動作時,這些轉換才會真正運? ? ?行。
2.血緣關系。一個RDD運算之后,會產生新的RDD。

(二)轉換算子
轉換算子用于對 RDD 進行轉換操作,生成一個新的 RDD。轉換操作是惰性的,即當調用轉換算子時,Spark 并不會立即執行計算,而是記錄下操作步驟,直到遇到行動算子時才會觸發實際的計算。

從格式和用法上來看,它就是集合對象的方法。

以下是一些常見的轉換算子:

????????1.map 算子
作用:對 RDD 中的每個元素應用給定的函數 f,將每個元素轉換為另一個元素,最終返回一個新的 RDD。這個函數 f 接收一個輸入類型為 T 的元素,返回一個類型為 U 的元素。

????????2.filter 算子
作用:篩選出 RDD 中滿足函數 f 條件(即 f 函數返回 true)的元素,返回一個新的 RDD,新 RDD 中的元素類型與原 RDD 相同。

格式:def filter(f: T => Boolean): RDD[T]

????????3.flatMap算子
作用:對 RDD 中的每個元素應用函數 f,函數 f 返回一個可遍歷的集合,然后將這些集合中的元素扁平化合并成一個新的 RDD。

格式:def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U]

4.reduceByKey 算子
reduceByKey 是 Spark 中用于處理鍵值對(Key - Value)類型 RDD 的一個重要轉換算子。它的核心作用是對具有相同鍵的所有值進行聚合操作,通過用戶提供的聚合函數將這些值合并成一個結果,從而實現數據的歸約和統計。例如統計每個鍵出現的次數、計算每個鍵對應值的總和、平均值等。

格式:def reduceByKey(func: (V, V) => V, numPartitions: Int): RDD[(K, V)]

(三)行動算子
行動算子(Action) 是一種觸發 RDD 計算的操作。與轉換算子(Transformation)不同,行動算子會返回一個結果給驅動程序(Driver Program),或者將結果寫入外部存儲系統。行動算子是觸發 Spark 計算的“觸發點”,因為 Spark 的 RDD 是懶惰計算的,只有在執行行動算子時,才會真正開始計算。

下面介紹集中常見的行動算子。

????????1. collect算子
作用:用于將分布式存儲在集群中各個節點上的 RDD 元素收集到驅動程序(Driver Program)中,并以數組的形式返回。這意味著該算子會觸發 Spark 作業的執行,將之前的轉換操作進行實際計算,并將結果匯總到驅動程序所在的節點。

格式:def collect(): Array[T]

????????2.reduce算子
作用:reduce 用于對 RDD 中的元素進行全局聚合操作,例如計算 RDD 中所有元素的總和、最大值、最小值等。在分布式計算環境中,reduce 會先在每個分區內進行局部聚合,然后將各個分區的結果進行全局聚合,最終得到一個單一的結果。

格式:def reduce(func: (T, T) => T): T

????????3.count算子
作用:
count 是 Spark 中的一個行動算子,用于統計 RDD 中元素的數量。它會觸發 Spark 作業的實際執行,對 RDD 中的所有元素進行計數,并將最終的計數結果返回給驅動程序。例如在進行數據驗證、抽樣或者評估數據處理任務的復雜度時,都可能需要知道 RDD 中元素的數量

格式:def count(): Long

????????4.foreach算子
作用:foreach 用于對 RDD 中的每個元素應用指定的函數。它主要用于執行一些副作用操作,比如將數據寫入外部存儲系統(如數據庫、文件系統等),或者進行日志記錄等。與其他轉換算子不同,foreach 不會返回一個新的 RDD,而是直接對每個元素執行操作。

格式:def foreach(f: T => Unit): Unit

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

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

相關文章

設置環境變量啟動jar報

1. 環境變量設置 set PATHC:\Program Files\java17\jdk-17.0.9\bin;%PATH%2. 啟動jar java -jar jar包名3. 記錄原因 PATH路徑前添加java執行文件路徑才會管用。添加后可以試試以下命令 直接輸入PATH 回車 PATH進行java版本測試 java -version

589. N叉樹的前序遍歷迭代法:null指針與棧的巧妙配合

一、題目描述 給定一個N叉樹的根節點,返回其節點值的前序遍歷結果。前序遍歷的定義是:先訪問根節點,再依次遍歷每個子節點(從左到右)。例如,對于如下N叉樹: 1/ | \3 2 4 / \ 5 6前序遍歷結果…

顯性知識的主要特征

有4個主要特征: 客觀存在性靜態存在性可共享性認知元能性

奧運數據可視化:探索數據講述奧運故事

在數據可視化的世界里,體育數據因其豐富的歷史和文化意義,常常成為最有吸引力的主題之一。今天我要分享一個令人著迷的奧運數據可視化項目,它巧妙地利用交互式圖表和動態動畫,展現了自1896年至今奧運會的發展歷程和各國奧運成就的…

Mysql存儲過程(附案例)

? 文章目錄 存儲過程概述1、基本語法2、變量①、系統變量②、用戶自定義變量③、局部變量 3、流程控制語句①、if語句②、參數③、case語句④、while語句⑤、repeat語句⑥、loop語句⑦、cursor游標⑧、handler 4、存儲函數 存儲過程概述 存儲過程是事先經過編譯并存儲在數據…

小波變換+注意力機制成為nature收割機

小波變換作為一種新興的信號分析工具,能夠高效地提取信號的局部特征,為復雜數據的處理提供了有力支持。然而,它在捕捉數據中最為關鍵的部分時仍存在局限性。為了彌補這一不足,我們引入了注意力機制,借助其能夠強化關注…

SQLMesh 增量模型從入門到精通:5步實現高效數據處理

本文深入解析 SQLMesh 中的增量時間范圍模型,介紹其核心原理、配置方法及高級特性。通過實際案例說明如何利用該模型提升數據加載效率,降低計算資源消耗,并提供配置示例與最佳實踐建議,幫助讀者在實際項目中有效應用這一強大功能。…

Android應用內存分析與優化 - 工具篇之Booster

序 在原理篇中,我們發現在App內存的分布中,Code是占大頭的部分,所以我們可以從App體積方面想辦法,通過減小App體積達到降低內存的目的,同時,根據權威的機構分析,體積與用戶下載和留存有很大的聯…

金屬加工液展|切削液展|2025上海金屬加工液展覽會

2025上海金屬加工液展覽會 時間:2025年12月2-4日 地點:上海新國際博覽中心 2025上海金屬加工液展規劃30000平方米展覽規模,預設展位1200個,將為國內外加工液產業提供一個集“展示、合作、交易、發展”于一體的綜合性平臺&#…

React學習———Redux 、 React Redux和react-persist

Redux Redux是一個流行的JavaScript狀態管理庫,通常用于React等前端框架結合使用。Redux 的設計思想是讓應用的狀態變得可預測、可追蹤、易于調試和測試。 Redux的核心l理念 單一數據源:整個應用的狀態被存儲在一個唯一的Store對象中,所有…

Python字符串常用方法詳解

文章目錄 Python字符串常用方法詳解一、字符串大小寫轉換方法(常用)1. 基礎大小寫轉換2. 案例:驗證碼檢查(不區分大小寫) 二、字符串查找與替換方法1. 查找相關方法2. 替換相關方法 三、字符串判斷方法1. 內容判斷方法 四、字符串分割與連接方…

MyBatis—動態 SQL

MyBatis—動態 SQL 一、動態 SQL 的核心作用 動態 SQL 主要解決以下問題: 靈活性:根據不同的輸入參數生成不同的 SQL 語句(如條件查詢、批量操作)。 可維護性:減少重復代碼,通過標簽化邏輯提高 SQL 可讀…

Python機器學習筆記(二十五、算法鏈與管道)

對于許多機器學習算法,特定數據表示非常重要。首先對數據進行縮放,然后手動合并特征,再利用無監督機器學習來學習特征。因此,大多數機器學習應用不僅需要應用單個算法,而且還需要將許多不同的處理步驟和機器學習模型鏈接在一起。Pipeline類可以用來簡化構建變換和模型鏈的…

YOLOv3深度解析:多尺度特征融合與實時檢測的里程碑

一、YOLOv3的誕生:繼承與突破的起點 YOLOv3作為YOLO系列的第三代算法,于2018年由Joseph Redmon等人提出。它在YOLOv2的基礎上,針對小目標檢測精度低、多類別標簽預測受限等問題進行了系統性改進。通過引入多尺度特征圖檢測、殘差網絡架構和獨…

已解決(親測有效!):安裝部署Docker Deskpot之后啟動出現Docker Engine Stopped!

文章目錄 已解決:安裝部署Docker Deskpot之后啟動出現Docker Engine Stopped!個人環境介紹自己的解決問題思路(詳細過程附截圖)1.打開控制面板2.點擊程序和功能3.點擊啟動或關閉windows功能4.Hyper-V5.右鍵菜單欄的windows圖標點擊…

PCIE接收端檢測機制分析

PCIE接收端檢測機制分析 1、PCIE的接收端檢測機制 接收器檢測電路作為發射器的一部分實現,必須正確檢測是否存在與ZRX-DC參數(40Ω-60Ω)隱含的直流阻抗等效的負載阻抗。 接收器檢測序列的推薦行為如下: ?初始狀態?&#xff…

[模型部署] 3. 性能優化

👋 你好!這里有實用干貨與深度分享?? 若有幫助,歡迎:? 👍 點贊 | ? 收藏 | 💬 評論 | ? 關注 ,解鎖更多精彩!? 📁 收藏專欄即可第一時間獲取最新推送🔔…

InternVL3: 利用AI處理文本、圖像、視頻、OCR和數據分析

InternVL3推動了視覺-語言理解、推理和感知的邊界。 在其前身InternVL 2.5的基礎上,這個新版本引入了工具使用、GUI代理操作、3D視覺和工業圖像分析方面的突破性能力。 讓我們來分析一下是什么讓InternVL3成為游戲規則的改變者 — 以及今天你如何開始嘗試使用它。 InternVL…

鴻蒙 ArkUI - ArkTS 組件 官方 UI組件 合集

ArkUI 組件速查表 鴻蒙應用開發頁面上需要實現的 UI 功能組件如果在這 100 多個組件里都找不到,那就需要組合造輪子了 使用技巧:先判斷需要實現的組件大方向,比如“選擇”、“文本”、“信息”等,或者是某種形狀比如“塊”、“圖…

HTTP GET報文解讀

考慮當瀏覽器發送一個HTTP GET報文時,通過Wireshark 俘獲到下列ASCII字符串: GET /cs453/index.html HTTP/1.1 Host: gaia.cs.umass.edu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Acc…