本文說明在 Photon 查詢引擎上執行工作負載的優點。
Photon 是一款高效能的 Azure Databricks 原生向量化查詢引擎,能更快執行 SQL 工作負載和 DataFrame API 呼叫,降低每個工作負載的總成本。 Photon 與 Apache Spark API 相容,因此可與現有程式碼搭配使用。
Photon 功能
以下是使用 Photon 的主要特性和優點。
- 支援使用 Delta 和 Parquet 數據表進行 SQL 及相當於 DataFrame 的操作。
- 加速查詢,能更快地處理資料,並包含彙總和連接。
- 從磁碟快取重複存取資料時,效能更快。
- 具備許多欄位及許多小檔案之數據表的穩固掃描效能。
- 使用
UPDATE、DELETE、MERGE INTO、INSERT和CREATE TABLE AS SELECT的快速 Delta 和 Parquet 撰寫,包括包含數千個數據行的寬數據表。 - 以雜湊聯結取代排序合併聯結。
- 對於 AI 和 ML 工作負載,Photon 使用 Spark SQL、Spark DataFrames、特徵工程、GraphFrames 和 xgboost4j 提高應用程式效能。
Photon 功能啟用
根據不同的計算類型,Photon 的啟用方式有所差異:
- Photon 預設執行於 SQL 資料倉儲以及無伺服器計算中,用於筆記本和工作流程。
- Photon 預設會啟用在執行 Databricks Runtime 9.1 LTS 及以上版本的計算上。
- Photon 可在執行 Databricks Runtime 15.2 for Machine Learning (EoS) 或以上版本的運算上手動啟用。
設定 Photon 啟用
若要在所有用途和作業計算上啟用或停用 Photon,請選取計算 UI 中的 [使用 Photon 加速] 複選框。
在使用 叢集 API 或 作業 API 建立的任何計算上,預設不會啟用 Photon。 若要啟用 Photon,您必須將 runtime_engine 屬性設定為 PHOTON。
支援的執行個體類型
Photon 支援司機節點和工作節點上的多種執行個體類型。 Photon 執行個體類型消耗 DBU 的速率與執行非 Photon 執行階段的相同執行個體類型不同。 欲了解更多關於 Photon 實例與 DBU 消費的資訊,請參閱 Azure Databricks 價格頁面。
支援的運算子、運算式和資料類型
以下是 Photon 涵蓋的運算子、運算式和資料類型。
運營商
- 掃描、篩選、投影
- 哈希聚合/連接/打亂
- Nested-Loop 聯結
- Null-Aware 反聯結
- 聯集, 擴展, ScalarSubquery
- Delta/Parquet 寫入接收器
- 排序
- 窗口函數
表達式
- 比較 / 邏輯
- 算術 / 數學 (大部分)
- 條件式 (IF、CASE 等)
- 字串 (常見字串)
- 類型轉換
- 彙總 (最常見的彙總)
- 日期/時間戳記
數據類型
- 位元組/短整數/整數/長整數
- 布林值
- 字串/二進位
- 十進制
- 浮點數/雙精度浮點數
- 日期/時間戳記
- 結構體
- 陣列
- 地圖
需要 Photon 的功能
以下是需要 Photon 的功能。
- 讀取和寫入的預測性 I/O(輸入/輸出)。 請參閱 什麼是預測性 I/O?。
-
MERGE、UPDATE和DELETE語句中的動態檔案剪除。 請參閱 動態檔案剪除。
限制
- 結構化串流:Photon 目前支援使用 Delta、Parquet、CSV 和 JSON 的無狀態串流。 在寫入 Delta 或 Parquet 接收器時,支援 Kafka 和 Kinesis 無狀態串流。
- Photon 不支援 UDF、RDD API 或資料集 API。
- Photon 不會影響通常在兩秒內執行的查詢。
如果您的工作負載遇到不支援的作業,計算資源將切換到標準執行階段引擎來處理剩餘的工作負載。