Delen via


Naslaginformatie over Python-taal voor Lakeflow Spark-declaratieve pijplijnen

Deze sectie bevat details voor de Python-programmeerinterface van Lakeflow Spark Declarative Pipelines (SDP).

pipelines moduleoverzicht

Python-functies van Lakeflow Spark-declaratieve pijplijnen worden gedefinieerd in de pyspark.pipelines module (geïmporteerd als dp). Uw pijplijnen die zijn geïmplementeerd met de Python-API, moeten deze module importeren:

from pyspark import pipelines as dp

Opmerking

De module pijplijnen is alleen beschikbaar in de context van een pijplijn. Het is niet beschikbaar in Python dat buiten pijplijnen wordt uitgevoerd. Zie ETL-pijplijnen ontwikkelen en fouten opsporen met de Lakeflow Pipelines Editor voor meer informatie over het bewerken van pijplijncode.

Apache Spark-pijplijnen™

Apache Spark bevat declaratieve pijplijnen vanaf Spark 4.1, die beschikbaar zijn via de pyspark.pipelines module. Databricks Runtime breidt deze opensource-mogelijkheden uit met aanvullende API's en integraties voor beheerd productiegebruik.

Code die is geschreven met de opensource-module pipelines wordt uitgevoerd zonder wijzigingen in Azure Databricks. De volgende functies maken geen deel uit van Apache Spark:

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

De pipelines module werd eerder aangeroepen dlt in Azure Databricks. Zie Wat is er gebeurd met @dlt?voor meer informatie en meer informatie over de verschillen van Apache Spark.

Functies voor gegevenssetdefinities

Pijplijnen maken gebruik van Python-decorators voor het definiëren van gegevenssets, zoals gematerialiseerde weergaven en streamingtabellen. Zie Functions om gegevenssets te definiëren.

API-referentie

Overwegingen voor Python-pijplijnen

Hier volgen belangrijke overwegingen bij het implementeren van pijplijnen met de Python-interface van Lakeflow Spark Declarative Pipelines (SDP):

  • SDP evalueert de code die meerdere keren een pijplijn definieert tijdens de planning en pijplijnuitvoeringen. Python-functies die gegevenssets definiëren, moeten alleen de code bevatten die nodig is om de tabel of weergave te definiëren. Willekeurige Python-logica die is opgenomen in gegevenssetdefinities kan leiden tot onverwacht gedrag.
  • Probeer geen aangepaste bewakingslogica te implementeren in uw gegevenssetdefinities. Zie Definieer de aangepaste bewaking van pijplijnen met event hooks.
  • De functie die wordt gebruikt om een gegevensset te definiëren, moet een Spark DataFrame retourneren. Neem geen logica op in uw gegevenssetdefinities die niet betrekking hebben op een geretourneerd DataFrame.
  • Gebruik nooit methoden die bestanden of tabellen opslaan of schrijven als onderdeel van uw pijplijngegevenssetcode.

Voorbeelden van Apache Spark-bewerkingen die nooit mogen worden gebruikt in pijplijncode:

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

Wat is er met @dlt gebeurd?

Voorheen gebruikte Azure Databricks de dlt module om pijplijnfunctionaliteit te ondersteunen. De dlt module is vervangen door de pyspark.pipelines module. U kunt nog steeds gebruiken dlt, maar Databricks raadt het gebruik pipelinesaan.

Verschillen tussen DLT, SDP en Apache Spark

In de volgende tabel ziet u de verschillen in syntaxis en functionaliteit tussen DLT, Lakeflow Spark-declaratieve pijplijnen en Apache Spark-declaratieve pijplijnen.

Area DLT-syntaxis SDP-syntaxis (Lakeflow en Apache, indien van toepassing) Beschikbaar in Apache Spark
Imports import dlt from pyspark import pipelines (as dp optioneel) Yes
Tabel voor streaming @dlt.table met een streaming-dataframe @dp.table Yes
Gerealiseerde weergave @dlt.table met een batch-dataframe @dp.materialized_view Yes
Bekijk @dlt.view @dp.temporary_view Yes
Stroom toevoegen @dlt.append_flow @dp.append_flow Yes
SQL : streamen CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL: gerealiseerd CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL - proces CREATE FLOW ... CREATE FLOW ... Yes
Gebeurtenislogboek spark.read.table("event_log") spark.read.table("event_log") Nee.
Wijzigingen toepassen (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Nee.
Expectations @dlt.expect(...) dp.expect(...) Nee.
Doorlopende modus Pijplijnconfiguratie met continue trigger (zelfde) Nee.
Zinken @dlt.create_sink(...) dp.create_sink(...) Yes