Apache Spark 4.0:將大數據分析提升到新的水平

Apache Spark 4.0 帶來了 PySpark 畫圖、多態 UDTF、改進的 SQL 腳本和 Python API 更新,以增強實時分析和可用性。 Apache Spark 4.0 于 2025 年發布,它通過增強性能、可訪問性和開發者生產力的創新,重新定義了大數據處理。在 Databricks、Apple 和 NVIDIA 等機構的 400 多位開發者的貢獻下,Spark 4.0 解決了數千個 JIRA 問題,并引入了諸多變革性功能:PySpark 原生畫圖、Python 數據源 API、多態用戶定義表函數 (UDTF)、狀態存儲增強、SQL 腳本以及 Spark Connect 改進。本文通過原始示例和圖表深入探討了這些功能、它們的技術基礎和實際應用。

1.Apache Spark 的演變

Apache Spark的內存處理性能比 Hadoop MapReduce 快 100 倍,使其成為大數據分析的基石。Spark 4.0 在此基礎上引入了優化,增強了查詢執行能力,擴展了 Python 的可訪問性,并提升了流式傳輸功能。這些改進使其成為金融、醫療保健和零售等注重可擴展性和實時分析的行業的多功能工具。社區驅動的開發確保 Spark 4.0 能夠滿足企業需求,同時確保從數據科學家到工程師等各種用戶都能輕松使用。

1.1 Spark 4.0 為何如此出色

性能:查詢執行和狀態管理的優化減少了大規模工作負載的延遲。 可訪問性:以 Python 為中心的功能降低了數據工程師和開發人員的門檻。 可擴展性:增強型流媒體支持高吞吐量、實時應用程序。

圖片

1.2 PySpark 中的原生畫圖

Spark 4.0 引入了PySpark DataFrames 的原生畫圖功能,使用戶能夠直接在 Spark 中創建直方圖、散點圖和折線圖等可視化效果,而無需使用 matplotlib 等外部庫。該功能由 Plotly 作為默認后端提供支持,通過將可視化集成到 Spark 生態系統中,簡化了探索性數據分析 (EDA) 流程。它自動處理大型數據集的數據采樣或聚合,確保性能和可用性。這對于需要在數據探索過程中快速獲取洞察的數據科學家尤為重要,因為它可以減少上下文切換并提高工作流程效率。例如,分析師無需將數據導出到外部工具,即可快速可視化大型數據集中的趨勢或異常情況。

1.3 案例

在零售行業,分析師可以將客戶購買模式可視化,以識別區域消費差異或季節性趨勢,從而能夠直接在 Spark 中更快地做出決策。

示例:可視化客戶支出

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("CustomerAnalysis").getOrCreate()
data = [(1, 50,?"North"), (2, 75,?"South"), (3, 60,?"East"), (4, 90,?"West")]
df = spark.createDataFrame(data, ["id",?"spend",?"region"])
df.plot(kind="scatter", x="id", y="spend", color="region")

此代碼生成按地區劃分的客戶支出散點圖,并使用 Plotly 在 Spark 無縫呈現。

圖片

2.Python API

Python 數據源API使 Python 開發人員能夠為批處理和流式工作負載創建自定義數據源,無需 Java 或 Scala 專業知識。此功能使數據集成更加民主化,允許團隊將 Spark 連接到專有格式、API 或數據庫。該 API 提供了一個靈活的框架來定義數據的讀取方式,同時支持結構化數據和流式數據,從而增強了 Spark 對現代數據管道的可擴展性。它簡化了與外部系統的集成,縮短了以 Python 為中心的團隊的開發時間,并支持從自定義數據源實時提取數據,使其成為動態環境的理想選擇。

2.1 技術優勢

  • 可擴展性:以最小的開銷將 Spark 連接到自定義 API 或特定文件格式。

  • 生產力:允許 Python 開發人員使用他們喜歡的語言工作,避免基于 JVM 的編碼。

  • 流支持:通過自定義源實現實時數據管道。

案例:自定義 CSV 數據源

from pyspark.sql.datasource import DataSource, DataSourceReader
class CustomCSVSource(DataSource):def name(self):return?"custom_csv"def reader(self, schema):return?CustomCSVReader(self.options)
class CustomCSVReader(DataSourceReader):def __init__(self, options):self.path = options.get("path")def?read(self, spark):return?spark.read.csv(self.path, header=True)
spark._jvm.org.apache.spark.sql.execution.datasources.DataSource.registerDataSource("custom_csv", CustomCSVSource)
df = spark.read.format("custom_csv").option("path",?"data.csv").load()

此代碼定義了一個自定義 CSV 閱讀器,演示了 Python 開發人員如何擴展 Spark 的數據連接。

圖片

3.多態 Python UDTF

PySpark 中的多態用戶定義表函數 (UDTF) 允許基于輸入數據動態輸出模式,從而為復雜的轉換提供靈活性。與具有固定模式的傳統 UDF 不同,多態 UDTF 能夠動態調整其輸出結構,使其成為輸出隨輸入條件變化的場景的理想選擇,例如數據解析、條件處理或多輸出轉換。此功能使開發人員能夠在 Spark 中處理各種數據處理需求,從而增強其在高級分析中的實用性。

3.1 案例

在欺詐檢測中,UDTF 可以處理交易數據并根據動態標準輸出不同的模式(例如,帶有風險評分或元數據的標記交易),從而簡化實時分析。

示例:動態數據轉換

from pyspark.sql.functions import udtf
@udtf(returnType="id: int, result: string")
class DynamicTransformUDTF:def?eval(self, row):yield row.id, f"Transformed_{row.value.upper()}"
df = spark.createDataFrame([(1,?"data"), (2,?"test")], ["id",?"value"])
result = df.select(DynamicTransformUDTF("id",?"value")).collect()

此 UDTF 將輸入字符串轉換為帶有前綴的大寫,展示動態模式處理。

圖片

4.狀態存儲增強功能

Spark 4.0 通過更好地重用靜態排序表 (SST) 文件、更智能的快照處理以及整體性能提升,增強了狀態流處理能力。這些功能可降低實時應用程序的延遲,并通過增強的日志記錄功能改進調試。狀態存儲可高效管理增量更新,使其適用于實時分析、物聯網數據處理或事件驅動系統等應用程序。SST 文件重用可最大限度地減少磁盤 I/O,快照管理可確保容錯能力,而詳細的日志則可簡化故障排除。

4.1 技術優勢

  • 效率:SST 文件重用減少了 I/O 開銷,加快了狀態更新速度。

  • 可靠性:快照管理確保一致的狀態恢復。

  • 調試:增強的日志為流操作提供了可操作的見解。

示例:實時銷售匯總

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("RealTimeSales").getOrCreate()
stream_df = spark.readStream.format("rate").option("rowsPerSecond", 5).load()
query = stream_df.groupBy("value").count().writeStream \.outputMode("complete").format("console").start()
query.awaitTermination()

這種流聚合利用優化的狀態管理來實現低延遲更新。

圖片

5.SQL 語言增強功能

Spark 4.0 引入了符合 ANSI SQL/PSM 標準的 SQL 腳本,包括會話變量、控制流和 PIPE 語法。這些功能支持直接在 SQL 中執行復雜的工作流,例如迭代計算或條件邏輯,從而減少對外部腳本語言的依賴。會話變量允許動態狀態跟蹤,控制流支持循環和分支,PIPE 語法簡化了多步驟查詢,使 Spark SQL 更適合企業級應用。

5.1 案例

在財務報告中,SQL 腳本可以計算運行總計、應用業務規則或跨數據集聚合數據,而無需離開 Spark SQL 環境,從而提高效率。

示例:收入計算

SET revenue = 0;
FOR row IN (SELECT amount FROM transactions)
DO
SET revenue = revenue + row.amount;
END FOR;
SELECT revenue AS total_revenue;

這使用控制流計算總收入,展示了 SQL 的高級功能。

圖片

6.Spark Connect 改進

Spark Connect 的客戶端-服務器架構幾乎與 Spark Classic 性能相當,支持遠程連接和客戶端調試。通過將應用程序與 Spark 集群解耦,它支持靈活的部署,例如從輕量級客戶端或云環境運行作業。這對于分布式團隊或需要低延遲訪問 Spark 集群且不依賴大量資源的應用程序來說是理想的選擇。

6.1 技術優勢

  • 靈活性:遠程執行支持多種部署場景。

  • 調試:客戶端工具簡化錯誤跟蹤和優化。

  • 可擴展性:最小設置可實現分布式環境。

示例:遠程數據查詢

from pyspark.sql.connect import SparkSession
spark = SparkSession.builder.remote("sc://spark-cluster:15002").getOrCreate()
df = spark.sql("SELECT * FROM customer_data")
df.show()

這連接到遠程 Spark 集群,展示了部署靈活性。

圖片

7.生產力增強

Spark 4.0 通過錯誤日志記錄、內存分析和直觀的 API 增強了開發人員體驗。這些功能可減少調試時間、優化資源利用率并簡化開發流程,尤其適用于涉及大型數據集或自定義邏輯的復雜管道。

示例:UDF 錯誤日志記錄

from pyspark.sql.functions import udf
@udf("string")
def process_text(text):return?text.upper()
df = spark.createDataFrame([("example",)], ["text"]).select(process_text("text"))
spark.sparkContext._jvm.org.apache.spark.util.ErrorLogger.log(df)

這將記錄 UDF 的錯誤,利用 Spark 4.0 的調試工具。

8.行業應用

Spark 4.0 的功能可實現變革性用例:

  1. 金融:通過流媒體增強功能進行實時欺詐檢測,每秒處理數百萬筆交易。

  2. 醫療保健:使用本機繪圖可視化患者數據,以快速了解趨勢或異常。

  3. 零售:定制數據源,提供個性化推薦,集成 API 或專有文件等多種數據格式。

未來趨勢

Spark 4.0 是 AI 驅動分析、云原生部署以及更深入的 Python 集成的基礎。其可擴展性和易用性使其成為大數據處理領域的領導者。開發者可以在 Databricks 社區版上探索 Spark 4.0,以構建下一代數據通道。

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

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

相關文章

手機解壓軟件 7z:高效便捷的解壓縮利器

在當今數字化時代,手機已經成為人們生活和工作中不可或缺的工具。隨著文件傳輸和存儲需求的不斷增加,7z 文件格式因其高效的壓縮比而備受青睞。在手機上處理 7z 文件變得越來越重要,合適的解壓軟件能帶來諸多便利。首先,7z 文件格…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第六課——測試圖案的FPGA實現

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程文件請關注…

Solidity——修改狀態變量注意事項和簡單優化建議

你的問題非常關鍵,涉及到 Solidity 合約部署時的初始化 gas 成本 和 運行時的存儲操作 gas 消耗。我們來詳細解答: 🚨 首先,你的代碼是非法的: contract MyContract {uint public myNumber;myNumber 1; // ? 不允許…

2023年全國青少年信息素養大賽Python編程小學組復賽真題+答案解析-海南賽區

2023年全國青少年信息素養大賽Python編程小學組復賽真題+答案解析-海南賽區 編程題 第1題 整數加8 題目描述 輸入一個整數,輸出這個整數加8的結果。 輸入描述 輸入一行一個正整數。 輸出描述 輸出求和的結果。 樣例1 輸入: 5 輸出: 13 題目解析 這是最基礎的輸入輸出與…

Qt基本組件詳解:按鈕、輸入框與容器控件

Qt基本組件詳解:按鈕、輸入框與容器控件目錄 按鈕類組件 QPushButtonQRadioButtonQCheckBox 輸入框組件 QLineEditQTextEdit 容器組件 QGroupBox 綜合應用示例思維導圖總結1. 按鈕類組件 1.1 QPushButton(普通按鈕) 功能:基礎交互…

Unity Universal Render Pipeline/Lit光照材質介紹

文章目錄前言參數介紹1、表面選項1.1 Worflow Mode工作流模式1.2 Surface Type 表面類型1.3 Blending Mode 混合模式1.4 Preserve Specular 保留鏡面光照(高光)1.5 Render Face 渲染面1.6 Alpha Clipping 透明度剪裁1.7 Receive Shadows 是否接收陰影2、…

uni-app ios離線推送,推送后點擊推送的鏈接進入程序后再次回到桌面,無法消除app的角標問題

問題現象: 解決方案: 1、用h5方法清理 h5地址:HTML5 API Reference 廢話不多說上代碼 /*** 清除應用角標(支持iOS和Android)* 使用H5方法清理推送角標*/clearAppBadge() {// #ifdef APP-PLUStry {plus.runtime.setBad…

遷移Oracle SH 示例 schema 到 PostgreSQL

接著上一篇文章:遷移Oracle HR 示例 schema 到 PostgreSQL中,本文做Oracle SH(Sales History)示例 schema的遷移,SH schema比HR schema更大更復雜,本次遷移的重點是: 分區表外部數據加載 使用…

1.1 ARMv8/ARMv9安全擴展

目錄1.1.1 ARM架構安全演進1.1.2 ARMv8安全特性異常級別(EL)安全模型關鍵安全擴展1.1.3 ARMv9安全創新機密計算架構(CCA)增強的隔離機制1.1.4 安全擴展的TF-A支持1.1.5 安全擴展配置示例1.1.1 ARM架構安全演進 ARM架構從v7到v9的安全演進路線: ARMv7:引…

更新用戶隱私協議后還是 ail api scope is not declared in the privacy agreement怎么辦??!

saveImageToPhotosAlbum:fail api scope is not declared in the privacy agreement昨天明明可以了,開了個會出來,又不行了,真要命啊啊啊啊啊啊啊啊啊啊(現在回想起來可能是因為我把發布的那個版本刪了,因為那個只是用來測試用的e…

練習:對象數組 5

定義一個長度為 3 的數組,數組存儲 1~3 名學生對象作為初始數據,學生對象的學號,姓名各不相同。學生的屬性:學號,姓名,年齡。要求 1:再次添加一個學生對象,并在添加的時候進行學號的…

Linux 中的 .bashrc 是什么?配置詳解

如果你使用過 Linux 終端,那么你很可能接觸過 .bashrc 文件。這個功能強大的腳本是個性化命令行環境并使其更高效運行的關鍵。 在本文中,我們將向你介紹這個文件是什么,在哪里可以找到它,以及如何安全地編輯它。你還將學到一些實…

JVM運行時數據區深度解析

💾 JVM運行時數據區深度解析 文章目錄💾 JVM運行時數據區深度解析🎯 引言📚 方法區📋 方法區存儲內容🔄 從永久代到元空間的演進永久代時期(JDK 8之前)元空間時期(JDK 8及…

.NET nupkg包的深度解析與安全防護指南

在.NET開發領域,nupkg包是開發者們不可或缺的工具。它不僅是代碼分發和資源共享的核心載體,還貫穿了開發、構建、部署的全流程。今天,我們將深入探討nupkg包的核心功能、打包發布流程以及安全防護措施,幫助你在.NET開發中更加得心…

Cursor 快速入門指南:從安裝到核心功能

引言 Cursor 是一款融合 AI 能力的現代代碼編輯器,旨在提升開發者的編碼效率。本文將帶您從零開始,快速掌握 Cursor 的完整使用流程 - 包括安裝配置、項目初始化以及核心 AI 功能的應用。 正文 1. 安裝與初始配置 1.1 下載與安裝 Cursor 支持跨平臺…

自然語言處理中probe探測是什么意思。

文章目錄🔹 1. 英文單詞的基本含義(動詞 & 名詞)? 作為動詞(to probe):? 作為名詞(a probe):🔹 2. 不同領域的具體含義🔹 3. 在機器學習/NL…

【記錄】Ubuntu掛載home文件夾到磁盤

問題描述 服務器裝好后,home文件夾一般存放各個用戶的文件,默認的存儲磁盤為系統磁盤,一般比較小,可能幾百G,這對于服務器來講,相當小了,所以需要對home文件夾進行重新調整。 我之前的博文 點擊進入 相關配置在重啟機器后,磁盤配置自動失效,即配置好后,home在大的磁…

【注意避坑】基于Spring AI 開發本地天氣 mcp server,通義靈碼測試MCP server連接不穩定,cherry studio連接報錯

springboot 版本: 3.5.4 cherry studio版本:1.4.7 通義靈碼版本: 2.5.13 文章目錄 問題描述:1. 通義靈碼添加mcp server ,配置測試2. cherry studio工具添加mcp server ,配置測試 項目源代碼:解…

Paimon LSM Tree Compaction 策略

壓縮怎么進行的這里的操作都是KValue,內部有row kind,標記了刪除和插入MergeTreeCompactManager 是 Paimon 中 Merge-Tree 結構壓縮任務的總調度中心。它的核心職責就是監控文件的層級狀態(Levels),并在合適的時機&…

小米路由器3C刷OpenWrt,更換系統/變磚恢復 指南

基礎篇看這里: 小米路由器3C如何安裝OpenWrt官方編譯的ROM - 嗶哩嗶哩 小米路由器 3C 刷入 Breed 和 OpenWrt - Snoopy1866 - 博客園 一、路由器注入 如果按照上面的文章, telnet、ftp一直連接失敗,那么可以嘗試看 這里: 獲取路由器root權…