Freigeben über


Lakeflow Spark Declarative Pipelines Python-Sprachreferenz

Dieser Abschnitt enthält Details zur Python-Programmierschnittstelle von Lakeflow Spark Declarative Pipelines (SDP).

pipelines Modulübersicht

Lakeflow Spark Declarative Pipelines Python-Funktionen werden im pyspark.pipelines Modul definiert (importiert als dp). Ihre mit der Python-API implementierten Pipelines müssen dieses Modul importieren:

from pyspark import pipelines as dp

Hinweis

Das Pipelinemodul ist nur im Kontext einer Pipeline verfügbar. Sie ist in Python, die außerhalb von Pipelines ausgeführt wird, nicht verfügbar. Weitere Informationen zum Bearbeiten von Pipelinecode finden Sie unter Entwickeln und Debuggen von ETL-Pipelines mit dem Lakeflow Pipelines Editor.

Apache Spark-Pipelines™

Apache Spark enthält deklarative Pipelines ab Spark 4.1, die über das pyspark.pipelines Modul verfügbar sind. Die Databricks-Runtime erweitert diese Open Source-Funktionen mit zusätzlichen APIs und Integrationen für die verwaltete Produktionsverwendung.

Code, der mit dem Open-Source-Modul pipelines geschrieben wurde, wird ohne Änderung in Azure Databricks ausgeführt. Die folgenden Features sind nicht Teil von Apache Spark:

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

Das Modul pipelines wurde zuvor in Azure Databricks dlt genannt. Ausführliche Informationen und weitere Informationen zu den Unterschieden von Apache Spark finden Sie unter Was ist passiert @dlt?.

Funktionen für Datasetdefinitionen

Pipelines verwenden Python-Dekoratoren zum Definieren von Datasets wie materialisierte Ansichten und Streamingtabellen. Informationen zum Definieren von Datasets finden Sie unter "Funktionen".

API-Referenz

Überlegungen zu Python-Pipelines

Im Folgenden finden Sie wichtige Überlegungen beim Implementieren von Pipelines mit der Python-Schnittstelle "Lakeflow Spark Declarative Pipelines (SDP)":

  • SDP wertet den Code aus, der eine Pipeline während der Planung und Pipelineausführung mehrmals definiert. Python-Funktionen, die Datasets definieren, sollten nur den Code enthalten, der zum Definieren der Tabelle oder Ansicht erforderlich ist. Beliebige Python-Logik, die in Datasetdefinitionen enthalten ist, kann zu unerwartetem Verhalten führen.
  • Versuchen Sie nicht, benutzerdefinierte Überwachungslogik in Ihren Datasetdefinitionen zu implementieren. Siehe Definieren der benutzerdefinierten Überwachung von Pipelines mit Ereignishaken.
  • Die Zum Definieren eines Datasets verwendete Funktion muss einen Spark DataFrame zurückgeben. Fügen Sie keine Logik in Ihre Datasetdefinitionen ein, die nicht mit einem zurückgegebenen DataFrame zusammenhängen.
  • Verwenden Sie niemals Methoden, die als Teil des Pipeline-Datasetcodes in Dateien oder Tabellen speichern oder schreiben.

Beispiele für Apache Spark-Vorgänge, die niemals im Pipelinecode verwendet werden sollten:

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

Was ist passiert @dlt?

Zuvor verwendeten Azure Databricks das dlt Modul zur Unterstützung von Pipelinefunktionen. Das dlt Modul wurde durch das pyspark.pipelines Modul ersetzt. Sie können weiterhin verwenden dlt, aber Databricks empfiehlt die Verwendung pipelines.

Unterschiede zwischen DLT, SDP und Apache Spark

Die folgende Tabelle zeigt die Unterschiede in der Syntax und Funktionalität zwischen DLT, Lakeflow Spark Declarative Pipelines und Apache Spark Declarative Pipelines.

Area DLT-Syntax SDP-Syntax (Lakeflow und Apache, sofern zutreffend) Verfügbar in Apache Spark
Importe import dlt from pyspark import pipelines (as dpoptional) Yes
Streamingtabelle @dlt.table mit einem Streaming-Dataframe @dp.table Yes
Materialisierte Ansicht @dlt.table mit einem Batch-Dataframe @dp.materialized_view Yes
Ansicht @dlt.view @dp.temporary_view Yes
Anfügefluss @dlt.append_flow @dp.append_flow Yes
SQL – Streaming CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL – materialisiert CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL – Ablauf CREATE FLOW ... CREATE FLOW ... Yes
Ereignisprotokoll spark.read.table("event_log") spark.read.table("event_log") Nein
Änderungen übernehmen (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Nein
Erwartungshaltung @dlt.expect(...) dp.expect(...) Nein
Fortlaufender Modus Pipelinekonfiguration mit fortlaufendem Trigger (identisch) Nein
Spüle @dlt.create_sink(...) dp.create_sink(...) Yes