Categories
程式開發

Spark 3.0 新特性搶先看


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

Spark 3.0 新特性搶先看 1

Accelerator-aware Scheduler

作為 Project Hydrogen 的延續,在 Spark 3.0版本里支持 GPU Aware Scheduling 調度,廣泛用於加速特定應用,比如深度學習等。

自適應查詢優化

這是Databricks 和 Intel 中國團隊在做的項目(SPARK-31412),基於已完成的執行計劃節點的統計數據,優化剩餘的查詢執行計劃,它能夠支持:動態合併小的partition減少Reducer 的數量;將Sort Merge Join 轉換為Broadcast Hash Join;動態分割相對比較大的partition從而更好地處理數據傾斜。以下圖為例:

Spark 3.0 新特性搶先看 2

這是一個典型的 Spark 任意操作過程,讀取兩個文件,而使用 Adaptive Execution 方法之後,將 Sort Merge Join 轉換為 Broadcast Hash Join,性能也有了很大的提升。

Data Source API V2

發布 Data Source API,其設計比較合理,性能更穩定,批處理和流處理使用統一的 API。其背後的歷史原因是,第一個版本的 Data Source API 在實現 Data Source 過程中不是很方便,後來做了 FileFormat。但是流處理的時候又使用另一套 API。所以社區花了很多時間把 API 都整合起來,並且增加了新的 Catalog plugin API(SPARK-31121)。

Apache Spark 3.0 其他目標:

  1. 支持 JDK 11
  2. 動態分區剪枝 (SPARK-11150)
  3. Redesigned pandas UDFs with type hints (SPARK-28264)

• 支持 Hadoop 3.x
• Hive execution 從 1.2.1 升級至 2.3.7
• Scala 2.12 GA
• 更加遵從 ANSI compliance
• Structured Steaming UI

Pandas DataFrame vs Spark DataFrame

Spark 3.0 新特性搶先看 3

很多數據科學家之前在學數據分析的時候使用 Python 的 Pandas,但是真正到了生產環境,Pandas 只能運行在一台機器上,而且是單線程,性能和可擴展性有限。這個時候需要轉到 Spark,但是受到 API 區別,所以會有一些局限。

Spark 3.0 新特性搶先看 4

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

【活動推薦】

關於Spark 3.0 新特性的解讀,我們邀請王耿亮老師在今年9月11日ArchSummit全球架構師峰會(深圳站)上詳細介紹,包括Delta Lake 新功能介紹、設計思路細節、用戶在使用過程中遇到的坑(案例),以及解決方法。感興趣的可以點擊查看會議官網了解詳情。