Partager via


Référence du langage Python pour les pipelines déclaratifs Spark Lakeflow

Cette section contient des détails sur l’interface de programmation Python De Lakeflow Spark Declarative Pipelines (SDP).

pipelines Vue d’ensemble du module

Les fonctions Python des pipelines déclaratifs Lakeflow Spark sont définies dans le module pyspark.pipelines (importé en tant que dp). Vos pipelines implémentés avec l’API Python doivent importer ce module :

from pyspark import pipelines as dp

Note

Le module pipelines est disponible uniquement dans le contexte d’un pipeline. Il n’est pas disponible dans Python s’exécutant en dehors des pipelines. Pour plus d’informations sur la modification du code de pipeline, consultez Développer et déboguer des pipelines ETL avec l’Éditeur de pipelines Lakeflow.

Pipelines Apache Spark™

Apache Spark inclut des pipelines déclaratifs commençant par Spark 4.1, disponibles via le pyspark.pipelines module. Databricks Runtime étend ces fonctionnalités open source avec des API et des intégrations supplémentaires pour une utilisation de production managée.

Le code écrit avec le module open source pipelines s’exécute sans modification sur Azure Databricks. Les fonctionnalités suivantes ne font pas partie d’Apache Spark :

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

Le pipelines module a été appelé dlt précédemment dans Azure Databricks. Pour plus d’informations et plus d’informations sur les différences d’Apache Spark, consultez Qu’est-il arrivé à @dlt?.

Fonctions pour les définitions de jeu de données

Les pipelines utilisent des décorateurs Python pour définir des jeux de données tels que des vues matérialisées et des tables de streaming. Consultez Functions pour définir des jeux de données.

Référence d’API

Exigences de codage pour les pipelines Python

Les exigences suivantes sont importantes lorsque vous implémentez des pipelines avec l’interface Python de Lakeflow Spark Declarative Pipelines (SDP) :

  • SDP évalue le code qui définit un pipeline plusieurs fois pendant la planification et les exécutions du pipeline. Les fonctions Python qui définissent des jeux de données doivent inclure uniquement le code requis pour définir la table ou la vue. Une logique Python arbitraire incluse dans les définitions de jeu de données peut entraîner un comportement inattendu.
  • N’essayez pas d’implémenter une logique de supervision personnalisée dans vos définitions de jeu de données. Consultez Définir une surveillance personnalisée des pipelines avec des hooks d’événements.
  • La fonction utilisée pour définir un jeu de données doit retourner un DataFrame Spark. N’incluez pas de logique dans vos définitions de jeu de données qui ne sont pas liées à un DataFrame retourné.
  • N’utilisez jamais de méthodes qui enregistrent ou écrivent dans des fichiers ou des tables dans le cadre de votre code de jeu de données de pipeline.

Exemples d’opérations Apache Spark qui ne doivent jamais être utilisées dans le code de pipeline :

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

Qu’est-ce qui s’est @dltpassé ?

Auparavant, Azure Databricks utilisait le module dlt pour prendre en charge les fonctionnalités de pipeline. Le dlt module a été remplacé par le pyspark.pipelines module. Vous pouvez toujours utiliser dlt, mais Databricks recommande d’utiliser pipelines.

Différences entre DLT, SDP et Apache Spark

Le tableau suivant présente les différences de syntaxe et de fonctionnalité entre DLT, Lakeflow Spark Declarative Pipelines et Apache Spark Declarative Pipelines.

Area Syntaxe DLT Syntaxe SDP (Lakeflow et Apache, le cas échéant) Disponible dans Apache Spark
Importations import dlt from pyspark import pipelines (as dpéventuellement) Oui
Table de diffusion en continu @dlt.table avec un dataframe en continu @dp.table Oui
Vue matérialisée @dlt.table avec un dataframe batch @dp.materialized_view Oui
Affichage @dlt.view @dp.temporary_view Oui
Flux d’ajout @dlt.append_flow @dp.append_flow Oui
SQL – Diffusion en continu CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Oui
SQL – matérialisé CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Oui
SQL : flux CREATE FLOW ... CREATE FLOW ... Oui
Journal des événements spark.read.table("event_log") spark.read.table("event_log") Non
Appliquer des modifications (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Non
Expectations @dlt.expect(...) dp.expect(...) Non
Mode continu Configuration du pipeline avec déclencheur continu (identique) Non
Récepteur @dlt.create_sink(...) dp.create_sink(...) Oui