Wählen Sie zwischen SQL und Python

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 faker oder boto3. 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() und foreach_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