Utiliser Python avec des pipelines autonomes

Vous pouvez créer et actualiser des vues matérialisées autonomes et diffuser des tables à partir d’un bloc-notes à l’aide de Python. Créez votre pipeline dans un notebook Python et exécutez-les avec spark.sql(). Cela vous permet de gérer des pipelines autonomes en même temps que vos autres workflows de notebooks basés sur Python.

Le code source Python des pipelines autonomes nécessite un notebook associé à un calcul serverless à usage général. Vous ne pouvez pas utiliser Python pour créer ou actualiser des pipelines autonomes à partir d'un entrepôt SQL Databricks, car un entrepôt exécute des instructions SQL, et non Python notebooks. Pour utiliser un entrepôt SQL à la place, consultez Utiliser des vues matérialisées autonomes et utiliser des tables de diffusion en continu autonomes.

Important

La création et l’actualisation de vues matérialisées autonomes et de tables de streaming depuis un notebook sur un calcul serverless à usage général est en version bêta et disponible que dans certaines régions. Voir Notebooks.

Requirements

Pour créer et mettre à jour des pipelines autonomes avec Python, vous devez disposer d’un notebook associé à un calcul serverless à usage général sur Databricks Runtime 18.1 ou version supérieure. Pour obtenir la liste complète des exigences, notamment la disponibilité régionale et les autorisations, consultez Notebooks.

Fonctionnement

Dans un notebook Python, passez les mêmes instructions que celles que vous exécutez à partir d’un entrepôt Databricks SQL vers spark.sql(). La syntaxe de la vue matérialisée autonome et de la table de diffusion en continu est identique ; seule la manière dont vous soumettez l’instruction diffère. Comme avec un entrepôt, chaque CREATE ou REFRESH instruction exécute un pipeline serverless pour traiter l’opération.

La spark session est disponible par défaut dans Azure Databricks notebooks, donc aucune importation n’est requise.

Créer une vue matérialisée

L’exemple suivant crée la vue matérialisée mv1 à partir de la table de base base_table1 :

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW mv1
  AS SELECT
    date,
    sum(sales) AS sum_of_sales
  FROM base_table1
  GROUP BY date
""")

Pour plus CREATE MATERIALIZED VIEW d’informations, telles que les actualisations planifiées et déclenchées, consultez Créer une vue matérialisée.

Créer une table de diffusion en continu

L’exemple suivant crée la table de diffusion en continu sales à partir de la table raw_data :

spark.sql("""
  CREATE OR REFRESH STREAMING TABLE sales
  AS SELECT product, price FROM STREAM raw_data
""")

Pour plus CREATE STREAMING TABLE d’informations, notamment le chargement de fichiers avec le chargeur automatique et la planification, consultez Utiliser des tables de diffusion en continu autonomes.

Rafraîchir une vue matérialisée ou une table de streaming

Utilisez une REFRESH instruction pour mettre à jour une table autonome avec les données les plus récentes de sa source :

spark.sql("REFRESH MATERIALIZED VIEW mv1")
spark.sql("REFRESH STREAMING TABLE sales")

Dans le calcul générique serverless, les actualisations sont synchrones. Les actualisations asynchrones (le ASYNC mot clé) ne sont pas prises en charge. Consultez le calcul généraliste sans serveur.

Paramétriser des instructions

Pour passer des valeurs de votre code Python dans une instruction au lieu de les coder en dur, utilisez des marqueurs de paramètres nommés dans sql et fournissez leurs valeurs par le biais de l’argument args de spark.sql(). Utilisez un marqueur tel que :min_sales directement pour les valeurs littérales. Encapsulez le marqueur IDENTIFIER() uniquement lorsque le paramètre est un nom d’objet, tel qu’une table, une vue ou un schéma, car les identificateurs ne peuvent pas être substitués en tant que valeurs de chaîne simple.

L’exemple suivant paramétre à la fois le nom de la vue matérialisée et une valeur de filtre :

mv_name = "main.sales.regional_sales"
min_sales = 1000

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW IDENTIFIER(:mv)
  AS SELECT
    region,
    sum(sales) AS sum_of_sales
  FROM base_table1
  WHERE sales > :min_sales
  GROUP BY region
""", args={
  "mv": mv_name,
  "min_sales": min_sales,
})

Pour plus d’informations, consultez les marqueurs de paramètre et IDENTIFIER la clause.

Exécuter d’autres instructions

Vous pouvez exécuter toute instruction autonome sur une vue matérialisée ou une table de streaming à partir d’un notebook Python en la passant à spark.sql(), y compris les instructions permettant de planifier des rafraîchissements, de modifier une table ou de supprimer une table. Pour comprendre comment utiliser des vues matérialisées et des tables de diffusion en continu, notamment la syntaxe SQL, consultez Utiliser des vues matérialisées autonomes et utiliser des tables de diffusion en continu autonomes.

Limites

Les vues matérialisées autonomes et les tables de streaming créées sur du calcul serverless à usage général présentent des limitations supplémentaires, notamment l’absence de prise en charge des actualisations asynchrones et de l’attribution des coûts par table. Pour consulter la liste complète, voir calcul général sans serveur.

Ressources additionnelles