Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lakeflow Spark Declarative Pipelines (SDP) supporta sia le interfacce SQL che Python per la definizione di pipeline batch e di streaming. Entrambe le interfacce producono lo stesso grafico del flusso di dati sottostante, quindi forniscono funzionalità equivalenti per la maggior parte dell'elaborazione dei dati. Si differenziano per flessibilità, accessibilità e copertura delle funzionalità.
Usare queste linee guida per decidere quale interfaccia usare:
- Se è possibile esprimere la logica in SQL, usare SQL.
- Se è necessario un controllo a livello di codice o una funzionalità solo Python, usare Python.
- Se si ha maggiore familiarità con Python, usare Python. Comprende l’intera gamma di funzionalità della pipeline, quindi la familiarità con essa è di per sé un motivo sufficiente. Lo stesso non è vero in senso inverso: SQL non copre tutte le funzionalità, quindi non sceglierla solo sulla familiarità.
È anche possibile combinare entrambe le interfacce nella stessa pipeline. Vedere Combinazione di SQL e Python.
Quando usare SQL
SQL è una soluzione adatta quando si vuole:
- Definizioni leggibili e dichiarative: logica chiara che i data engineer e gli analisti possono gestire.
- Tipi di tabella standard: pipeline costituite principalmente da tabelle di streaming e viste materializzate.
- Catene di trasformazione lineare: inserimento e trasformazione semplici, ad esempio un flusso da bronzo a argento a oro, senza logica procedurale.
- Tabelle autonome: tabelle di streaming autonome o viste materializzate create in SQL.
Per una panoramica dello sviluppo di pipeline in SQL, vedere Sviluppare codice di pipeline dichiarative spark di Lakeflow con SQL.
Quando usare Python
Python è una soluzione ottimale quando è necessario:
- Controllo a livello di codice: cicli, condizionali e metaprogrammazione per generare definizioni di pipeline in modo dinamico.
-
Librerie esterne: Python pacchetti come
fakeroboto3. Consulta Gestione delle dipendenze Python per le pipeline. - Funzioni definite dall'utente: è possibile definire funzioni definite dall'utente in Python e chiamarle sia da file di origine Python che da file di origine SQL. Vedere Funzioni scalari definite dall'utente - Python.
-
funzionalità solo Python:
-
create_auto_cdc_from_snapshot_flow()per applicare l'acquisizione dei dati delle modifiche da un'istantanea del database. -
create_sink()eforeach_batch_sink()per scrivere in streaming di eventi esterni o in destinazioni Delta.
-
Per una panoramica dello sviluppo di pipeline in Python, vedere Sviluppare codice della pipeline con Python.
Combinare SQL e Python
Una singola pipeline può combinare definizioni SQL e Python, ma ogni linguaggio deve trovarsi in un file di origine separato. Ad esempio, è possibile definire le tabelle bronze e silver in Python e le tabelle gold in SQL.
Disponibilità della funzionalità
La tabella seguente confronta il modo in cui ogni interfaccia supporta le funzionalità della pipeline comuni:
| Caratteristica / Funzionalità | SQL | Python |
|---|---|---|
| tabella di streaming | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| vista materializzata | CREATE MATERIALIZED VIEW |
materialized_view() |
| Visualizzazione temporanea | CREATE TEMPORARY VIEW |
temporary_view() |
| Tabella privata |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| CDC automatico | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Cdc automatico dallo snapshot | Non supportato | create_auto_cdc_from_snapshot_flow() |
| Flusso | CREATE FLOW |
append_flow() |
| Sink | Non supportato |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail(), e le varianti expect_all |
Riepilogo delle decisioni
Se hai bisogno di...
| Obiettivo | Interfaccia consigliata |
|---|---|
| Semplicità e leggibilità | SQL |
| Configurazione dichiarativa rapida | SQL |
| Tabella di streaming autonoma o vista materializzata | SQL |
| Logica condizionale o iterativa | Python |
| UDFs o librerie Python esterne | Python |
| CDC automatico da snapshot o sinks | Python |
| Controllo completo a livello di codice e modularità | Python |