共用方式為


Lakeflow Spark 宣告性管道 Python 語言參考

本節包含 Lakeflow Spark 宣告式管線 (SDP) Python 程式設計介面的詳細資料。

pipelines 模組概觀

Lakeflow Spark 宣告式管線的 Python 函式定義在 pyspark.pipelines 模組中(匯入為 dp)。 使用 Python API 實作的管線必須匯入此模組:

from pyspark import pipelines as dp

備註

管線模組僅在管線的情境中可用。 它無法在管線外部執行的 Python 中使用。 如需編輯管線程式碼的詳細資訊,請參閱 使用 Lakeflow 管線編輯器開發和偵錯 ETL 管線

Apache Spark™ 管線

Apache Spark 從 Spark 4.1 開始包含 宣告式管線,可以透過 pyspark.pipelines 模組取得。 Databricks Runtime 會透過額外的 API 和整合來擴充這些開放原始碼功能,以供受控生產使用。

使用開放原始碼 pipelines 模組撰寫的程式碼會在 Azure Databricks 上執行,無需修改。 下列功能不屬於 Apache Spark 的一部分:

  • dp.create_auto_cdc_flow
  • dp.create_auto_cdc_from_snapshot_flow
  • @dp.expect(...)
  • @dp.temporary_view

pipelines 模組以前在 Azure Databricks 中被稱為 dlt。 關於與 Apache Spark 的差異及細節,請參見 What happened to @dlt

資料集定義的函數

管線會使用 Python 裝飾器來定義資料集,例如具體化檢視和串流資料表。 請參閱 定義資料集的函數

API 參考資料

Python 管線的考量事項

以下是使用 Lakeflow Spark 宣告式管線 (SDP) Python 介面實作管線時的重要考慮:

  • SDP 會在規劃和管線執行期間多次評估定義管線的程式碼。 定義資料集的 Python 函數應僅包含定義資料表或檢視所需的程式碼。 資料集定義中包含的任意 Python 邏輯可能會導致非預期的行為。
  • 請勿嘗試在資料集定義中實作自訂監控邏輯。 請參閱 定義使用事件掛勾的管線自訂監視
  • 用來定義資料集的函式必須傳回 Spark DataFrame。 請勿在資料集定義中包含與傳回的 DataFrame 無關的邏輯。
  • 切勿使用將檔案或資料表儲存或寫入為管線資料集程式碼一部分的方法。

絕不應在管線程式碼中使用的 Apache Spark 作業範例:

  • collect()
  • count()
  • toPandas()
  • save()
  • saveAsTable()
  • start()
  • toTable()

怎麼了 @dlt

先前,Azure Databricks 會使用模組 dlt 來支援管線功能。 模組 dlt 已由模組 pyspark.pipelines 取代。 您仍然可以使用dlt,但 Databricks 建議使用pipelines

DLT、SDP 與 Apache Spark 的差異

下表展示了 DLT、Lakeflow Spark 宣告式管線與 Apache Spark 宣告式管線在語法與功能的差異。

Area DLT 語法 SDP 語法(Lakeflow 與 Apache,適用時) 在 Apache Spark 中可用
匯入 import dlt from pyspark import pipelinesas dp可選) Yes
串流資料表 @dlt.table 使用串流資料框 @dp.table Yes
具現化視圖 @dlt.table 使用批次資料框 @dp.materialized_view Yes
View @dlt.view @dp.temporary_view Yes
附加流程 @dlt.append_flow @dp.append_flow Yes
SQL – 串流 CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL – 實體化 CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL – 流程 CREATE FLOW ... CREATE FLOW ... Yes
事件記錄 spark.read.table("event_log") spark.read.table("event_log")
應用變更(CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...)
Expectations @dlt.expect(...) dp.expect(...)
連續模式 具有連續觸發器的管線設定 (同上)
水槽 @dlt.create_sink(...) dp.create_sink(...) Yes