經(jīng)過(guò)七輪投票, Apache Spark 3.2 終于正式發(fā)布了。Apache Spark 3.2 已經(jīng)是 Databricks Runtime 10.0 的一部分,感興趣的同學(xué)可以去試用一下。按照慣例,這個(gè)版本應(yīng)該不是穩(wěn)定版,所以建議大家不要在生產(chǎn)環(huán)境中使用。
Spark 的每月 Maven 下載數(shù)量迅速增長(zhǎng)到 2000 萬(wàn),與去年同期相比,Spark 的月下載量翻了一番。Spark 已成為在單節(jié)點(diǎn)機(jī)器或集群上執(zhí)行數(shù)據(jù)工程、數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的最廣泛使用的引擎。
Spark 3.2 繼續(xù)以使 Spark 更加統(tǒng)一、簡(jiǎn)單、快速和可擴(kuò)展為目標(biāo),通過(guò)以下特性擴(kuò)展其范圍:
?在 Apache Spark 上引入 panda API,統(tǒng)一小數(shù)據(jù)API和大數(shù)據(jù)API。
?完成 ANSI SQL 兼容模式,簡(jiǎn)化 SQL 工作負(fù)載的遷移。
?自適應(yīng)查詢執(zhí)行產(chǎn)品化完成,以在運(yùn)行時(shí)加速 Spark SQL。
?引入 RocksDB 狀態(tài)存儲(chǔ)以使?fàn)顟B(tài)處理更具可擴(kuò)展性。
在這篇博文中,我們總結(jié)了一些更高層次的特性和改進(jìn)。請(qǐng)關(guān)注即將發(fā)布的深入研究這些特性的文章。有關(guān)所有 Spark 組件的主要功能和已解決的 JIRA 的完整列表,請(qǐng)參閱 Apache Spark 3.2.0 release notes
統(tǒng)一小數(shù)據(jù) API 和大數(shù)據(jù) API
Python 是 Spark 上使用最廣泛的語(yǔ)言。為了使 Spark 更具 Python 風(fēng)格,Pandas API 被引入到 Spark,作為 Project Zen 的一部分(另請(qǐng)參閱 Data + AI Summit 2021 會(huì)議中的 Project Zen: Making Data Science Easier in PySpark 議題)。現(xiàn)在 pandas 的現(xiàn)有用戶可以通過(guò)一行更改來(lái)擴(kuò)展他們的 pandas 應(yīng)用程序。如下圖所示,得益于 Spark 引擎中的復(fù)雜優(yōu)化,單節(jié)點(diǎn)機(jī)器 [左] 和多節(jié)點(diǎn) Spark 集群 [右] 的性能都可以得到極大提升。
同時(shí),Python 用戶還可以無(wú)縫利用 Spark 提供的統(tǒng)一分析功能,包括通過(guò) SQL 查詢數(shù)據(jù)、流處理和可擴(kuò)展機(jī)器學(xué)習(xí) (ML)。新的 Pandas API 還提供了由 plotly 后端支持的交互式數(shù)據(jù)可視化。
簡(jiǎn)化 SQL 遷移
添加了更多 ANSI SQL 功能(例如,支持 lateral join)。經(jīng)過(guò)一年多的發(fā)展,本次發(fā)布的 ANSI SQL 兼容處于 GA 狀態(tài)。為了避免大量破壞行為的更改,默認(rèn)情況下 spark.sql.ansi.enabled 依然是未啟用的。ANSI 模式包括以下主要行為更改:
?當(dāng) SQL 運(yùn)算符/函數(shù)的輸入無(wú)效時(shí),會(huì)拋出運(yùn)行時(shí)錯(cuò)誤,而不是返回為 null (SPARK-33275)。例如,算術(shù)運(yùn)算中的整數(shù)值溢出錯(cuò)誤,或?qū)⒆址D(zhuǎn)換為數(shù)字/時(shí)間戳類型時(shí)的解析錯(cuò)誤。
?標(biāo)準(zhǔn)化類型強(qiáng)制語(yǔ)法規(guī)則 (SPARK-34246)。新規(guī)則定義了給定數(shù)據(jù)類型的值是否可以基于數(shù)據(jù)類型優(yōu)先級(jí)列表隱式提升為另一種數(shù)據(jù)類型,這比默認(rèn)的非 ANSI 模式更直接。
?新的顯式轉(zhuǎn)換語(yǔ)法規(guī)則 (SPARK-33354)。當(dāng) Spark 查詢包含非法類型轉(zhuǎn)換(例如,日期/時(shí)間戳類型轉(zhuǎn)換為數(shù)字類型)時(shí),會(huì)拋出編譯時(shí)錯(cuò)誤,告知用戶轉(zhuǎn)換無(wú)效。
此版本還包括一些尚未完全完成的新計(jì)劃。例如,標(biāo)準(zhǔn)化 Spark 中的異常消息(SPARK-33539);引入 ANSI interval type (SPARK-27790) 并提高相關(guān)子查詢的覆蓋范圍 (SPARK-35553)。
在運(yùn)行時(shí)加速 Spark SQL
此版本 (SPARK-33679) 中默認(rèn)啟用自適應(yīng)查詢執(zhí)行 (AQE)。為了提高性能,AQE 可以根據(jù)在運(yùn)行時(shí)收集的準(zhǔn)確統(tǒng)計(jì)信息重新優(yōu)化查詢執(zhí)行計(jì)劃。在大數(shù)據(jù)中,維護(hù)和預(yù)先收集統(tǒng)計(jì)數(shù)據(jù)的成本很高。無(wú)論優(yōu)化器有多先進(jìn),缺乏準(zhǔn)確的統(tǒng)計(jì)信息通常會(huì)導(dǎo)致計(jì)劃效率低下。在這個(gè)版本中,AQE 與所有現(xiàn)有的查詢優(yōu)化技術(shù)(例如,動(dòng)態(tài)分區(qū)修剪,Dynamic Partition Pruning)完全兼容,以重新優(yōu)化 JOIN 策略、傾斜 JOIN 和 shuffle分區(qū)合并。
小數(shù)據(jù)和大數(shù)據(jù)都應(yīng)該在統(tǒng)一的數(shù)據(jù)分析系統(tǒng)中以高效的方式處理。短查詢性能也變得至關(guān)重要。當(dāng)處理的數(shù)據(jù)量相當(dāng)小時(shí),在復(fù)雜查詢中編譯 Spark 查詢的開(kāi)銷非常大。為了進(jìn)一步降低查詢編譯延遲,Spark 3.2.0刪除了分析器/優(yōu)化器規(guī)則(SPARK-35042、SPARK-35103) 中不必要的查詢計(jì)劃遍歷,并加快了新查詢計(jì)劃的構(gòu)建 (SPARK-34989)。因此,與 Spark 3.1.2 相比,TPC-DS 查詢的編譯時(shí)間減少了 61%。
更可擴(kuò)展的狀態(tài)處理流
Structured Streaming 中狀態(tài)存儲(chǔ)的默認(rèn)實(shí)現(xiàn)是不可伸縮的,因?yàn)榭梢跃S護(hù)的狀態(tài)數(shù)量受執(zhí)行器堆大小的限制。在此版本中,Databricks 為 Spark 社區(qū)基于 RocksDB 的狀態(tài)存儲(chǔ)實(shí)現(xiàn)做出了貢獻(xiàn),該實(shí)現(xiàn)已在 Databricks 生產(chǎn)中使用了四年多。這種狀態(tài)存儲(chǔ)可以通過(guò)對(duì)鍵進(jìn)行排序來(lái)避免完全掃描,并在不依賴于執(zhí)行器堆大小的情況下從磁盤提供數(shù)據(jù)。
此外,狀態(tài)存儲(chǔ) API 還包含用于前綴匹配掃描 (SPARK-35861) 的 API,以有效支持基于事件時(shí)間的會(huì)話 (SPARK-10816),允許用戶在 eventTime 上對(duì)會(huì)話窗口進(jìn)行聚合。更多細(xì)節(jié),請(qǐng)閱讀 Native support of session window in Apache Spark’s Structured Streaming 博文。
Spark 3.2 的其他更新
除了上面這些新功能外,這個(gè)版本還關(guān)注可用性、穩(wěn)定性和功能加強(qiáng),解決了大約 1700 個(gè) JIRA tickets。這是 200 多名貢獻(xiàn)者貢獻(xiàn)的結(jié)果,包括個(gè)人和公司,如 Databricks,蘋果,Linkedin, Facebook,微軟,英特爾,阿里巴巴,英偉達(dá),Netflix, Adobe 等。我們?cè)谶@篇博文中重點(diǎn)介紹了 Spark 中的許多關(guān)鍵 SQL、Python 和流數(shù)據(jù)改進(jìn),但 3.2 里程碑中還有許多其他功能,包括代碼生成覆蓋率的改進(jìn)和連接器的增強(qiáng),您可以在版本中了解更多信息。
開(kāi)始使用 Spark 3.2
如果您想在 Databricks Runtime 10.0 中試用 Apache Spark 3.2,請(qǐng)注冊(cè) Databricks 社區(qū)版或 Databricks 試用版,這兩者都是免費(fèi)的,并在幾分鐘內(nèi)就可以使用。如果你想自己搭建的話,可以到 這里 下載。
本文翻譯自 《Introducing Apache Spark 3.2》:https://databricks.com/blog/2021/10/19/introducing-apache-spark-3-2.html
責(zé)任編輯:haq
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7335瀏覽量
94754 -
API
+關(guān)注
關(guān)注
2文章
2368瀏覽量
66752
原文標(biāo)題:Apache Spark 3.2 正式發(fā)布,新特性詳解
文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
NVIDIA DGX Spark桌面級(jí)AI超級(jí)計(jì)算機(jī)助力開(kāi)發(fā)者構(gòu)建AI模型
TUSB1002A:高性能 USB 3.2 轉(zhuǎn)接驅(qū)動(dòng)器的設(shè)計(jì)與應(yīng)用
TUSB8044A四端口USB 3.2第1代集線器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
TUSB8042A四端口USB 3.2 x1 Gen1集線器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
如何在DGX Spark上運(yùn)行NVIDIA Omniverse
TUSB1142:USB 3.2 轉(zhuǎn)接驅(qū)動(dòng)器的卓越之選
NVIDIA DGX Spark系統(tǒng)恢復(fù)過(guò)程與步驟
NVIDIA DGX Spark助力構(gòu)建自己的AI模型
NVIDIA DGX Spark快速入門指南
NVIDIA DGX Spark新一代AI超級(jí)計(jì)算機(jī)正式交付
NVIDIA DGX Spark桌面AI計(jì)算機(jī)開(kāi)啟預(yù)訂
使用NVIDIA GPU加速Apache Spark中Parquet數(shù)據(jù)掃描
FVT-3SVCTCXO 3.2×2.5mm:GPS/IoT/移動(dòng)設(shè)備應(yīng)用規(guī)格與特性概述
NVIDIA加速的Apache Spark助力企業(yè)節(jié)省大量成本
Apache Spark 3.2有哪些新特性
評(píng)論