Spark 3.0 新特性搶先看

記得 Databricks 研發工程師王耿亮老師去年在分享 Spark 新特性議題的時候,稍微透露了一些 關於 Spark 3.0 版本特性的內容,但具體的性能細節能夠關注今年 ASF 和 Apache Spark PMC 最終的發佈信息。這裏作一些簡單的介紹,具體技術細節請關注 9 月 11 日深圳站 ArchSummit 全球架構師峯會演講。架構

圖片

Data Source API V2app

做爲 Project Hydrogen 的延續,在 Spark 3.0 版本里支持 GPU Aware Scheduling 調度,普遍用於加速特定應用,好比深度學習等。ide

發佈 Data Source API,其設計比較合理,性能更穩定,批處理和流處理使用統一的 API。其背後的歷史緣由是,第一個版本的 Data Source API 在實現 Data Source 過程當中不是很方便,後來作了 fire for mate。可是流處理的時候又使用另外一套 API。因此社區花了不少時間把 API 都整合起來,後期能兼容各類雲數據存儲,例如 Hive,Delta 等等。oop

自適應查詢優化性能

這是 Databricks 和Intel 中國團隊在作的項目(https://tinyurl.com/y3rjwcos),基於已完成的執行計劃節點的統計數據,優化剩餘的查詢執行計劃,它的特色是:減小 Reducer 的數量;將 Sort Merge Join 轉換爲 Broadcast Hash Join;處理數據傾斜。如下圖爲例:學習

這是一個典型的 Spark 任意操做過程,讀取兩個文件,而使用 Adaptive Execution 方法以後,避免了存儲的過程,性能也有了很大的提高。優化

Spark on Kubernetesurl

Spark 3.0 在 Kubernetes 上有更多的功能,例如支持使用 pod 模板來定製化 driver 和 executor 對應的 pods;支持動態資源申請,資源空閒的時候,減小 executor 數量,資源緊張的時候,動態的加入一些 executor;支持外置的 shuffle 服務,將 shuffle 服務放在獨立的 pod 裏,可以解耦成一個架構。spa

Apache Spark 3.0 其餘目標:線程

• 支持 Hadoop 3.x

• Hive execution 從 1.2.1 升級至 2.3.4

• Scala 2.12 GA

• 更加聽從 ANSI SQL

• 提升 PySpark 可用性

Pandas DataFrame vs Spark DataFrame

圖片

不少數據科學家以前在學數據分析的時候使用 Python 的 Pandas,可是真正到了生產環境,Pandas 只能運行在一臺機器上,並且是單線程,性能和可擴展性有限。這個時候須要轉到 Spark,可是受到 API 區別,因此會有一些侷限。

圖片

可是後來開源了 Koalas,目標是使用 Pandas API 能夠直接運行在 Spark,可以支持數據科學家更好的無縫遷移到 Spark。

相關文章
相關標籤/搜索