Spark Core(二)

Spark-Core編程(二)

RDD轉換算子

RDD 根據數據處理方式的不同將算子整體上分為 Value 類型、雙 Value 類型和 Key-Value 類型

Value類型

1)map

將處理的數據逐條進行映射轉換,這里的轉換可以是類型的轉換,也可以是值的轉換

實例:

運行結果:

2)mapPartitions

將待處理的數據以分區為單位發送到計算節點進行處理,這里的處理是指可以進行任意的處理,哪怕是過濾數據

實例:

運行結果:

map和mapPartitions 的區別

1.Map 算子是分區內一個數據一個數據的執行,類似于串行操作。而 mapPartitions 算子是以分區為單位進行批處理操作

2.Map 算子主要目的將數據源中的數據進行轉換和改變。但是不會減少或增多數據。MapPartitions 算子需要傳遞一個迭代器,返回一個迭代器,沒有要求的元素的個數保持不變,所以可以增加或減少數據

3.Map 算子因為類似于串行操作,所以性能比較低,而是 mapPartitions 算子類似于批處理,所以性能較高。但是?mapPartitions 算子會長時間占用內存,那么這樣會導致內存可能不夠用,出現內存溢出的錯誤。所以在內存有限的情況下,不推薦使用

3)mapPartitionsWithIndex

將待處理的數據以分區為單位發送到計算節點進行處理,這里的處理是指可以進行任意的處理,哪怕是過濾數據,在處理時同時可以獲取當前分區索引

4)flatMap

將處理的數據進行扁平化后再進行映射處理,所以算子也稱之為扁平映射

實例:

運行結果:

map和flatMap的區別:

map會將每一條輸入數據映射為一個新對象

flatMap包含兩個操作:會將每一個輸入對象輸入映射為一個新集合,然后把這些新集合連成一個大集合

5)glom

將同一個分區的數據直接轉換為相同類型的內存數組進行處理,分區不變

實例:

運行結果:

6)groupBy

將數據根據指定的規則進行分組, 分區默認不變,但是數據會被打亂重新組合,我們將這樣的操作稱之為?shuffle。極限情況下,數據可能被分在同一個分區中

實例:

運行結果:

注:一個組的數據在一個分區中,但是并不是說一個分區中只有一個組

7)filter

將數據根據指定的規則進行篩選過濾,符合規則的數據保留,不符合規則的數據丟棄。

當數據進行篩選過濾后,分區不變,但是分區內的數據可能不均衡,生產環境下,可能會出

現數據傾斜

實例:

運行結果:

8)sample

根據指定的規則從數據集中抽取數據

實例

1.伯努利算法(抽取數據不放回

2.泊松算法(抽取數據放回

運行結果:

9)distinct

將數據集中重復的數據去重

實例:

運行結果:

10)coalesce

根據數據量縮減分區,用于大數據集過濾后,提高小數據集的執行效率

當?spark 程序中,存在過多的小任務的時候,可以通過 coalesce 方法,收縮合并分區,減少分區的個數,減小任務調度成本

實例:

運行結果:

11)repartition

該操作內部其實執行的是?coalesce 操作,參數 shuffle 的默認值為 true。無論是將分區數多的RDD 轉換為分區數少的 RDD,還是將分區數少的 RDD 轉換為分區數多的 RDD,repartition操作都可以完成,因為無論如何都會經?shuffle 過程

實例:

運行結果:

12sortBy

該操作用于排序數據。在排序之前,可以將數據通過?f 函數進行處理,之后按照 f 函數處理的結果進行排序,默認為升序排列。排序后新產生的?RDD 的分區數與原 RDD 的分區數一致。中間存在?shuffle 的過程

實例:

運行結果:

雙Value類型

13) intersection

對源?RDD 和參數 RDD 求交集后返回一個新的 RDD

實例:

運行結果:

14) union

對源?RDD 和參數 RDD 求并集后返回一個新的 RDD(重復數據不會去重)

實例

運行結果:

15) subtract

以源?RDD 元素為主,去除兩個 RDD 中重復元素,將源RDD的其他元素保留下來。(求差集)

實例:

運行結果:

16) zip

將兩個?RDD 中的元素,以鍵值對的形式進行合并。其中,鍵值對中的 Key 為第 1 個 RDD

中的元素,Value 為第 2 個 RDD 中的相同位置的元素

實例:

運行結果:

Key-Value類型:

17) partitionBy

將數據按照指定?Partitioner 重新進行分區。Spark 默認的分區器是 HashPartitioner

實例:

運行結果:

18) groupByKey

將數據源的數據根據?key 對 value 進行分組

實例:

運行結果:

19) reduceByKey

可以將數據按照相同的?Key 對 Value 進行聚合

實例:

運行結果:

20) aggregateByKey

將數據根據不同的規則進行分區內計算和分區間計算

實例:

運行結果:

21) foldByKey

當分區內計算規則和分區間計算規則相同時,aggregateByKey 就可以簡化為 foldByKey

實例

運行結果:

22) combineByKey

最通用的對?key-value 型 rdd 進行聚集操作的聚集函數(aggregation function)。類似于

aggregate(),combineByKey()允許用戶返回值的類型與輸入不一致

實例:

運行結果:

23) sortByKey

在一個(K,V)的 RDD 上調用,K 必須實現 Ordered 接口(特質),返回一個按照 key 進行排序

實例

運行結果:

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

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

相關文章

C#打開文件及目錄腳本

如果每天開始工作前都要做一些準備工作,比如打開文件或文件夾,我們可以使用代碼一鍵完成。 using System.Diagnostics; using System.IO;namespace OpenFile {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, …

Python生成exe

其中的 -w 參數是 PyInstaller 用于窗口模式(Windowed mode),它會關閉命令行窗口的輸出,這通常用于 圖形界面程序(GUI),比如使用 PyQt6, Tkinter, PySide6 等。 所以: 如果你在沒有…

【大模型微調】如何解決llamaFactory微調效果與vllm部署效果不一致如何解決

以下個人沒整理太全 一、生成式語言模型的對話模板介紹 使用Qwen/Qwen1.5-0.5B-Chat訓練 對話模板不一樣。回答的內容就會不一樣。 我們可以看到例如qwen模型的tokenizer_config.json文件,就可以看到對話模板,一般同系列的模型,模板基本都…

Linux網絡編程——詳解網絡層IP協議、網段劃分、路由

目錄 一、前言 二、IP協議的認識 1、什么是IP協議? 2、IP協議報頭 三、網段劃分 1、初步認識IP與路由 2、IP地址 I、DHCP動態主機配置協議 3、IP地址的劃分 I、CIDR設計 II、子網數目的計算 III、子網掩碼的確定 四、特殊的IP地址 五、IP地址的數量限…

ansible+docker+docker-compose快速部署4節點高可用minio集群

目錄 github項目地址 示例服務器列表 安裝前 修改變量文件group_vars/all.yml 修改ansible主機清單 修改setup.sh安裝腳本 用法演示 安裝后驗證 github項目地址 https://github.com/sulibao/ansible_minio_cluster.git 示例服務器列表 安裝前 修改變量文件group_var…

MySql主從相關概念

想象一下,你的業務飛速增長,用戶請求如潮水般涌來,突然數據庫主庫宕機,數據丟失,服務癱瘓——這簡直是開發者的噩夢!MySQL主從復制就像一張安全網,通過主庫寫、從庫讀的協作模式,不僅…

機械臂只有位置信息是否可以進行手眼標定?

平常我在做手眼標定時,一般都是通過OpenCV的cv::calibrateHandEye函數進行求解,需要輸入多組不同的機械臂位姿。今天遇到了一款舵機機器人,只能獲取位置,得不到姿態信息,想著那就把姿態都設為0,結果求不出來…

華為數字芯片機考2025合集2已校正

單選 1. 題目內容 關于亞穩態的描述錯誤的是( )。 1. 解題步驟 1.1 理解亞穩態(Metastability)的核心特性 亞穩態是指觸發器無法在指定時間內穩定輸出有效邏輯電平(0或1)的狀態,其關鍵特點…

T-Box車載系統介紹及其應用

定義 T-Box汽車系統,全稱為Telematics - BOX,也常簡稱為車載T - BOX,是汽車智能系統及車聯網系統中的核心組成部分,是安裝在車輛上的一種高科技遠程信息處理器。 工作原理 T-Box的核心功能主要通過MPU和MCU實現。MPU負責應用程序功…

[redis進階一]redis的持久化(1)RDB篇章

目錄 一 認識持久化 (1)先看總結圖 (2)什么是持久化? (3)redis是怎么進行持久化的呢 (4)簡單分析一下RDB持久化和AOF持久化的不同 二 RDB持久化 (1)RDB的觸發機制 (2)RDB的bgsave執行流程 (3)RDB文件的處理 (4)RDB的優缺點 (5)RDB效果演示板書 三 溫習Linux文件…

uniapp日常總結--uniapp頁面跳轉方式

uniapp日常總結--uniapp頁面跳轉方式_uniapp 跳轉-CSDN博客

《汽車電器與電子技術》實驗報告

SRS系統結構原理與故障檢測診斷 車輛上為什么要配安全氣囊?——解析汽車被動安全的關鍵防線 一、安全氣囊的核心作用:應對高速碰撞的“救命緩沖墊” 車輛在高速碰撞時(如正面碰撞、側面碰撞),人體會因慣性以極高速度…

ffmpeg編解碼器相關函數

文章目錄 🎯 你需要理解的核心結構體:📦 常用函數及使用順序(以解碼為例)1?? avcodec_find_decoder() / avcodec_find_encoder()2?? avcodec_alloc_context3()3?? avcodec_parameters_to_context()4?? avcodec…

尚硅谷2019版Java網絡編程筆記

第14章 網絡編程 網絡編程概述 什么是網絡編程? 網絡編程是通過網絡協議實現計算機之間的數據交換。Java提供了強大的網絡編程支持,隱藏了底層細節,開發者可以輕松實現網絡通信。 網絡編程的核心問題 如何定位網絡上的主機:通…

解決【遠程主機可能不符合 glibc 和 libstdc++ Vs code 服務器的先決條件】

可能是因為vscode不支持遠程操作系統的版本,要么升級操作系統要么回退vscode版本 vscode回退1.97版本下載地址: 1.97版本VSCODE

forms+windows添加激活水印

formswindows添加激活水印 多語言水印文本,根據系統語言自動切換。水印顯示在每個屏幕的右下角,位置動態調整。半透明灰色文字,微軟雅黑字體。窗口無邊框、置頂、透明背景,不干擾用戶操作。支持多顯示器。高DPI適配。 效果圖&am…

LeetCode --- 444 周賽

題目列表 3507. 移除最小數對使數組有序 I 3508. 設計路由器 3509. 最大化交錯和為 K 的子序列乘積 3510. 移除最小數對使數組有序 II 一、移除最小數對使數組有序 I & II 由于數組是給定的,所以本題的操作步驟是固定的,我們只要能快速模擬操作的過…

限流、降級、熔斷、隔離?

在微服務架構中,服務限流、降級、熔斷和隔離是保障系統高可用性的核心手段,但它們解決的問題和應用場景不同。以下是它們的區別、解決方案和實際案例的詳細說明: 一、服務限流(Rate Limiting) 定義:通過限…

Day22 -php開發01--留言板+知識點(超全局變量 文件包含 數據庫操作 第三方插件)

環境要求:php7.0.9 小皮 navicat phpstorm24.1 知識點:會寫(留言板 留言板后臺) 超全局變量 三方插件的使用 文件包含 1、開啟小皮并利用navicat新建一個數據庫 注意:本地的服務mysql關閉后 才可打開小皮。屬…

制造一只電子喵 (qwen2.5:0.5b 微調 LoRA 使用 llama-factory)

AI (神經網絡模型) 可以認為是計算機的一種新的 “編程” 方式. 為了充分利用計算機, 只學習傳統的編程 (編程語言/代碼) 是不夠的, 我們還要掌握 AI. 本文以 qwen2.5 和 llama-factory 舉栗, 介紹語言模型 (LLM) 的微調 (LoRA SFT). 為了方便上手, 此處選擇使用小模型 (qwen2…