Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Lakeflow Spark Declarative Pipelines (SDP) unterstützt sowohl SQL- als auch Python Schnittstellen zum Definieren von Batch- und Streamingpipelines. Beide Schnittstellen erzeugen dasselbe zugrunde liegende Dataflowdiagramm, sodass sie für die meisten Datenverarbeitungen gleichwertige Funktionen bereitstellen. Sie unterscheiden sich hinsichtlich Flexibilität, Barrierefreiheit und Featureabdeckung.
Verwenden Sie diese Anleitung, um zu entscheiden, welche Schnittstelle verwendet werden soll:
- Wenn Sie Ihre Logik in SQL ausdrücken können, verwenden Sie SQL.
- Wenn Sie eine programmgesteuerte Steuerung oder ein nur Python-Feature benötigen, verwenden Sie Python.
- Wenn Sie mit Python vertraut sind, verwenden Sie Python. Es deckt den vollständigen Funktionsumfang der Pipeline ab, also ist Vertrautheit allein schon Grund genug. Das Gleiche gilt umgekehrt nicht: SQL deckt nicht alle Funktionen ab, also entscheiden Sie sich nicht allein deshalb dafür, weil es Ihnen vertraut ist.
Sie können auch beide Schnittstellen in derselben Pipeline kombinieren. Siehe Mix SQL und Python.
Wann SQL verwendet werden sollte
SQL eignet sich gut, wenn Sie möchten:
- Lesbare deklarative Definitionen: Klare Logik, die Datentechniker und Analysten verwalten können.
- Standardtabellentypen: Pipelines, die hauptsächlich aus Streamingtabellen und materialisierten Ansichten erstellt wurden.
- Lineare Transformationsketten: Einfache Aufnahme und Transformation, z. B. ein Bronze-zu-Silber-zu-Gold-Fluss, ohne prozedurale Logik.
- Eigenständige Tabellen: Eigenständige Streamingtabellen oder materialisierte Ansichten, die Sie in SQL erstellen.
Eine Übersicht über die Entwicklung von Pipelines in SQL finden Sie unter Developing Lakeflow Spark Declarative Pipelines code with SQL.
Wann Python verwendet werden soll
Python ist bei Bedarf gut geeignet:
- Programmgesteuerte Steuerung: Schleifen, Bedingungen und Metaprogrammierung zum dynamischen Generieren von Pipelinedefinitionen.
-
Externe Bibliotheken: Python Pakete wie
fakeroderboto3. Siehe Verwalten von Abhängigkeiten für Python-Pipelines. - Benutzerdefinierte Funktionen (UDFs): Sie definieren UDFs in Python und können sie aus Python- und SQL-Quelldateien aufrufen. Weitere Informationen finden Sie unter Benutzerdefinierte Skalarfunktionen: Python.
-
Python-Only-Features:
-
create_auto_cdc_from_snapshot_flow()zum Anwenden der Änderungsdatenerfassung aus einer Datenbankmomentaufnahme. -
create_sink()undforeach_batch_sink(), um in externe Ereignisstreaming- oder Delta-Ziele zu schreiben.
-
Eine Übersicht über die Entwicklung von Pipelines in Python finden Sie unter Entwickeln von Pipelinecode mit Python.
Kombinieren von SQL und Python
Eine einzelne Pipeline kann SQL- und Python Definitionen kombinieren, jede Sprache muss sich jedoch in einer separaten Quelldatei befinden. Beispielsweise können Sie Ihre Bronze- und Silbertabellen in Python und Ihren Goldtabellen in SQL definieren.
Verfügbarkeit von Funktionen
In der folgenden Tabelle wird verglichen, wie jede Schnittstelle allgemeine Pipelinefeatures unterstützt:
| Feature | SQL | Python |
|---|---|---|
| Streaming-Tabelle | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| materialisierte Ansicht | CREATE MATERIALIZED VIEW |
materialized_view() |
| Temporäre Ansicht | CREATE TEMPORARY VIEW |
temporary_view() |
| Private Tabelle |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| Automatisches CDC | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Automatisches CDC aus Snapshot | Nicht unterstützt | create_auto_cdc_from_snapshot_flow() |
| Durchfluss | CREATE FLOW |
append_flow() |
| Senke | Nicht unterstützt |
create_sink(), foreach_batch_sink() |
| Erwartungshaltung | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail()und die expect_all Varianten |
Entscheidungszusammenfassung
Wenn Sie etwas benötigen...
| Ziel | Empfohlene Schnittstelle |
|---|---|
| Einfachheit und Lesbarkeit | SQL |
| Schnelle deklarative Konfiguration | SQL |
| Eigenständige Streamingtabelle oder materialisierte Ansicht | SQL |
| Bedingungs- oder Schleifenlogik | Python |
| UDFs oder externe Python-Bibliotheken | Python |
| Automatisches CDC aus Momentaufnahmen oder Senken | Python |
| Volle programmgesteuerte Steuerung und Modularität | Python |