Spark 3.0 新特性搶先看

記得 Databricks 研發工程師王耿亮老師

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

Spark 3.0 新特性搶先看

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 新特性搶先看

這是一個典型的 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 新特性搶先看

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

Spark 3.0 新特性搶先看

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


分享到:


相關文章: