Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lakeflow Spark Declarative Pipelines (SDP) prend en charge les interfaces SQL et Python pour définir des pipelines de traitement par lots et de diffusion en continu. Les deux interfaces produisent le même graphe de flux de données sous-jacent, de sorte qu’elles fournissent des fonctionnalités équivalentes pour la plupart des traitements de données. Elles diffèrent en termes de flexibilité, d’accessibilité et de couverture des fonctionnalités.
Utilisez ces conseils pour déterminer l’interface à utiliser :
- Si vous pouvez exprimer votre logique dans SQL, utilisez SQL.
- Si vous avez besoin d’un contrôle programmatique ou d’une fonctionnalité Python uniquement, utilisez Python.
- Si vous êtes plus à l'aise avec Python, utilisez Python. Il couvre l’ensemble complet de fonctionnalités de pipeline, donc la familiarité est suffisante. La même chose n’est pas vraie dans l’inverse : SQL ne couvre pas chaque fonctionnalité, donc ne le choisissez pas sur la familiarité seule.
Vous pouvez également combiner les deux interfaces dans le même pipeline. Consultez Mix SQL et Python.
Quand utiliser SQL
SQL convient bien lorsque vous souhaitez :
- Définitions lisibles et déclaratives : logique claire que les ingénieurs de données et les analystes peuvent gérer.
- Types de tables standard : pipelines créés principalement à partir de tables de streaming et de vues matérialisées.
- Chaînes de transformation linéaires : ingestion et transformation simples, telles qu’un flux bronze-argent-or, sans logique procédurale.
- Tables autonomes : tables de diffusion en continu autonomes ou vues matérialisées que vous créez dans SQL.
Pour obtenir une vue d’ensemble du développement de pipelines dans SQL, consultez Développer du code de pipelines déclaratifs Spark Lakeflow avec SQL.
Quand utiliser Python
Python est bien adapté quand vous avez besoin de :
- Contrôle programmatique : boucles, conditions et métaprogrammation pour générer dynamiquement des définitions de pipeline.
-
Bibliothèques externes : Python packages tels que
fakerouboto3. Consultez Gestion des dépendances Python pour les pipelines. - Fonctions définies par l’utilisateur (UDF) : vous définissez des fonctions définies par l’utilisateur dans Python et pouvez les appeler à partir de fichiers sources Python et SQL. Voir Fonctions scalaires définies par l'utilisateur – Python.
-
fonctionnalités Python uniquement :
-
create_auto_cdc_from_snapshot_flow()pour appliquer la capture de données modifiées à partir d’un instantané de base de données. -
create_sink()etforeach_batch_sink()pour écrire vers des destinations Delta ou de diffusion externe en continu d’événements.
-
Pour obtenir une vue d’ensemble du développement de pipelines dans Python, consultez Développer du code de pipeline avec Python.
Mélanger SQL et Python
Un pipeline unique peut combiner des définitions SQL et Python, mais chaque langage doit se trouver dans un fichier source distinct. Par exemple, vous pouvez définir vos tables bronze et argent dans Python et vos tables d’or dans SQL.
Disponibilité des fonctionnalités
Le tableau suivant compare la façon dont chaque interface prend en charge les fonctionnalités courantes du pipeline :
| Feature | SQL | Python |
|---|---|---|
| table de streaming | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| vue matérialisée | CREATE MATERIALIZED VIEW |
materialized_view() |
| Vue temporaire | CREATE TEMPORARY VIEW |
temporary_view() |
| Table privée |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| CDC automatique | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| CDC automatique à partir d’un instantané | Non pris en charge | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Récepteur | Non pris en charge |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail() et les variantes expect_all |
Résumé de la décision
Si vous en avez besoin...
| Objectif | Interface recommandée |
|---|---|
| Simplicité et lisibilité | SQL |
| Configuration déclarative rapide | SQL |
| Table de diffusion en continu autonome ou vue matérialisée | SQL |
| Logique conditionnelle ou de boucle | Python |
| Fonctions définies par l’utilisateur ou bibliothèques de Python externes | Python |
| Capture de données modifiées automatique à partir d’instantanés ou de récepteurs | Python |
| Contrôle et modularité de programmation complets | Python |