Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Lakeflow Spark-declaratieve pijplijnen (SDP) ondersteunt zowel SQL- als Python-interfaces voor het definiëren van batch- en streamingpijplijnen. Beide interfaces produceren dezelfde onderliggende gegevensstroomgrafiek, zodat ze gelijkwaardige functionaliteit bieden voor de meeste gegevensverwerking. Ze verschillen in flexibiliteit, toegankelijkheid en functiedekking.
Gebruik deze richtlijnen om te bepalen welke interface u wilt gebruiken:
- Als u uw logica in SQL kunt uitdrukken, gebruikt u SQL.
- Als u programmatisch beheer of een functie alleen-Python nodig hebt, gebruikt u Python.
- Als u vertrouwd bent met Python, gebruikt u Python. Het omvat de volledige pijplijnfunctieset, dus bekendheid is reden genoeg. Hetzelfde geldt niet omgekeerd: SQL behandelt niet elke functie, dus kies deze niet alleen voor vertrouwdheid.
U kunt beide interfaces ook combineren in dezelfde pijplijn. Zie Mix SQL en Python.
Wanneer gebruikt u SQL?
SQL is geschikt als u wilt:
- Leesbare, declaratieve definities: Duidelijke logica die data engineers en analisten kunnen onderhouden.
- Standaardtabeltypen: Pijplijnen die voornamelijk zijn gebouwd op basis van streamingtabellen en gerealiseerde weergaven.
- Lineaire transformatieketens: Eenvoudige opname en transformatie, zoals een brons-naar-zilver-naar-goudstroom, zonder procedurele logica.
- Zelfstandige tabellen: zelfstandige streamingtabellen of gerealiseerde weergaven, die u in SQL maakt.
Voor een overzicht van het ontwikkelen van pijplijnen in SQL, zie Lakeflow Spark Declarative Pipelines-code ontwikkelen met SQL.
Wanneer gebruikt u Python
Python is geschikt voor het volgende:
- Programmatisch beheer: Lussen, conditionals en metaprogramming om pijplijndefinities dynamisch te genereren.
-
Externe bibliotheken: Python pakketten zoals
fakerofboto3. Zie Python-afhankelijkheden voor pijplijnen beheren. - Door de gebruiker gedefinieerde functies (UDF's):u definieert UDF's in Python en kunt ze aanroepen vanuit zowel Python als SQL-bronbestanden. Zie door de gebruiker gedefinieerde scalaire functies - Python.
-
Functies alleen voor Python:
-
create_auto_cdc_from_snapshot_flow()om wijzigingsgegevensopname toe te passen op basis van een momentopname van een database. -
create_sink()enforeach_batch_sink()om naar externe eventstreaming- of Delta-doelen te schrijven.
-
Zie Pijplijncode ontwikkelen met Python voor een overzicht van het ontwikkelen van pijplijnen in Python.
SQL en Python combineren
Eén pijplijn kan SQL- en Python definities combineren, maar elke taal moet zich in een afzonderlijk bronbestand hebben. U kunt bijvoorbeeld uw bronzen en zilveren tabellen definiëren in Python en uw gouden tabellen in SQL.
Beschikbaarheid van functies
In de volgende tabel wordt vergeleken hoe elke interface algemene pijplijnfuncties ondersteunt:
| Eigenschap | SQL | Python |
|---|---|---|
| streamingtabel | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| gematerialiseerde weergave | CREATE MATERIALIZED VIEW |
materialized_view() |
| Tijdelijke weergave | CREATE TEMPORARY VIEW |
temporary_view() |
| Privétabel |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| Auto CDC | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Auto CDC van momentopname | Niet ondersteund | create_auto_cdc_from_snapshot_flow() |
| Stroom | CREATE FLOW |
append_flow() |
| Sink | Niet ondersteund |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail()en de expect_all varianten |
Beslissingsoverzicht
Als u dat nodig hebt...
| Doel | Aanbevolen interface |
|---|---|
| Eenvoud en leesbaarheid | SQL |
| Snelle declaratieve configuratie | SQL |
| Afzonderlijke streaming-tabel of gematerialiseerde weergave | SQL |
| Voorwaardelijke of herhalingslogica | Python |
| UDFs of externe Python-bibliotheken | Python |
| Auto CDC van momentopnamen of sinks | Python |
| Volledig programmatisch beheer en modulariteit | Python |