什麼是 Delta Lake?
Delta Lake 是優化的儲存層,可為 Databricks 上 Lakehouse 中的數據表提供基礎。 Delta Lake 是 開放原始碼 軟體,其會使用以檔案為基礎的事務歷史記錄來擴充 Parquet 數據檔,以進行 ACID 交易和可調整的元數據處理。 Delta Lake 與 Apache Spark API 完全相容,且已針對與結構化串流緊密整合而開發,可讓您輕鬆地針對批次和串流作業使用單一數據複本,並提供大規模增量處理。
Delta Lake 是 Azure Databricks 上所有作業的預設格式。 除非另有指定,否則 Azure Databricks 上的所有數據表都是 Delta 數據表。 Databricks 最初開發 Delta Lake 通訊協定,並繼續積极參與 開放原始碼 專案。 Databricks 平臺中的許多優化和產品都是以 Apache Spark 和 Delta Lake 所提供的保證為基礎而建置的。 如需 Azure Databricks 優化的資訊,請參閱 Azure Databricks 上的優化建議。
如需 Delta Lake SQL 命令的參考資訊,請參閱 Delta Lake 語句。
Delta Lake 事務歷史記錄具有定義完善的開放式通訊協定,可供任何系統用來讀取記錄。 請參閱 差異事務歷史記錄通訊協定。
開始使用 Delta Lake
根據預設,Azure Databricks 上的所有資料表都是 Delta 資料表。 無論您是使用 Apache Spark DataFrames 或 SQL,只要將資料儲存至具有預設設定的 Lakehouse,即可取得 Delta Lake 的所有優點。
如需基本 Delta Lake 作業的範例,例如建立資料表、讀取、寫入和更新資料,請參閱教學課程: Delta Lake。
Databricks 有許多 Delta Lake 最佳做法的建議。
將數據轉換成 Delta Lake
Azure Databricks 提供數個產品來加速和簡化將數據載入 Lakehouse。
- Delta Live Tables:
- COPY INTO
- 自動載入器
- 新增數據UI
- 以累加方式將 Parquet 或 Iceberg 數據轉換為 Delta Lake
- 將 Parquet 或 Iceberg 數據一次性轉換成 Delta Lake
- 第三方合作夥伴
如需擷取選項的完整清單,請參閱 將數據內嵌至 Databricks Lakehouse。
更新和修改 Delta Lake 數據表
使用 Delta Lake 的不可部分完成交易提供許多更新數據和元數據的選項。 Databricks 建議您避免直接與 Delta Lake 檔案目錄中的數據和事務歷史記錄檔互動,以避免損毀數據表。
- Delta Lake 支援使用合併作業的 upsert。 請參閱 使用合併將 Upsert 插入 Delta Lake 數據表。
- Delta Lake 提供許多選項,可根據篩選和分割區進行選擇性覆寫。 請參閱 選擇性地使用 Delta Lake 覆寫數據。
- 您可以手動或自動更新數據表架構,而不需重寫數據。 請參閱 更新 Delta Lake 數據表架構。
- 啟用數據行對應以重新命名或刪除資料行,而不需重寫數據。 請參閱重新命名和卸除與 Delta Lake 資料行對應的資料行。
Delta Lake 上的累加式和串流工作負載
Delta Lake 已針對 Azure Databricks 上的結構化串流進行優化。 Delta Live Tables 使用簡化的基礎結構部署、增強的調整和受控數據相依性來擴充原生功能。
查詢舊版資料表
每次寫入 Delta 資料表都會建立新的資料表版本。 您可以使用交易記錄來檢閱資料表的修改內容,並查詢先前的資料表版本。 請參閱使用 Delta Lake 資料表歷程記錄。
Delta Lake 架構增強功能
Delta Lake 會驗證寫入的架構,確保寫入數據表的所有數據都符合您設定的需求。
使用 Delta Lake 管理檔案和編製數據索引
Azure Databricks 會為 Delta Lake 設定許多預設參數,以影響數據檔的大小和記錄中保留的數據表版本數目。 Delta Lake 使用元數據剖析和實體數據配置的組合,以減少掃描以完成任何查詢的檔案數目。
設定和檢閱 Delta Lake 設定
Azure Databricks 會將 Delta Lake 數據表的所有數據和元數據儲存在雲端物件記憶體中。 您可以在資料表層級或 Spark 工作階段內設定許多組態。 您可以檢閱 Delta 資料表的詳細數據,以探索所設定的選項。
使用 Delta Lake 和 Delta Live Tables 的數據管線
Azure Databricks 鼓勵使用者利用 獎章架構 ,在清理和擴充數據時,透過一系列數據表來處理數據。 Delta 即時數據表 可透過優化的執行和自動化基礎結構部署和調整,簡化 ETL 工作負載。
Delta Lake 功能相容性
並非所有 Delta Lake 功能都在 Databricks Runtime 的所有版本中。 如需 Delta Lake 版本設定的相關信息,請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?。
Delta Lake API 檔
對於 Delta 數據表上大部分的讀取和寫入作業,您可以使用 Spark SQL 或 Apache Spark DataFrame API。
如需 Delta Lake 特定的 SQL 語句,請參閱 Delta Lake 語句。
Azure Databricks 可確保與 Databricks Runtime 中 Delta Lake API 的二進位相容性。 若要檢視每個 Databricks Runtime 版本中封裝的 Delta Lake API 版本,請參閱 Databricks Runtime 版本資訊中相關文章的系統環境一節。 如需適用於 Python、Scala 和 Java 的 Delta Lake API 檔,請參閱 OSS Delta Lake 檔。