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) è un framework dichiarativo per la compilazione di pipeline di dati batch e di streaming in SQL e Python. I concetti di base sono pipeline, flussi, tabelle di streaming, viste materializzate e sink, che interagiscono per elaborare i dati con orchestrazione automatica e aggiornamenti incrementali.
Note
Le pipeline dichiarative di Lakeflow Spark richiedono il piano Premium. Per ulteriori informazioni, contattare il team dell'account Databricks.
Che cos'è SDP?
Lakeflow Spark Declarative Pipelines è un framework dichiarativo per lo sviluppo e l'esecuzione di pipeline di dati batch e di streaming in SQL e Python. Lakeflow SDP estende ed è interoperabile con le pipeline dichiarative di Apache Spark. Funziona sul Databricks Runtime ottimizzato per le prestazioni e l'API dichiarativa flows di Lakeflow Spark usa la stessa API DataFrame di Apache Spark e Structured Streaming.
I casi d'uso comuni per SDP includono:
- Acquisizione incrementale dei dati da fonti quali lo storage cloud (Amazon S3, Azure ADLS Gen2 e Google Cloud Storage) e i bus di messaggi (Apache Kafka, Amazon Kinesis, Google Pub/Sub, Azure EventHub e Apache Pulsar).
- Trasformazioni incrementali di batch e streaming con operatori senza stato e con stato.
- Elaborazione del flusso in tempo reale tra archivi transazionali, ad esempio bus di messaggi e database.
Per altre informazioni sull'elaborazione dei dati dichiarativa, vedere Elaborazione procedurale e dichiarativa dei dati in Databricks.
Quali sono i vantaggi di SDP?
La natura dichiarativa di SDP offre i vantaggi seguenti rispetto allo sviluppo di processi di dati con le API Apache Spark e Spark Structured Streaming e l'esecuzione con Databricks Runtime usando l'orchestrazione manuale tramite Processi Lakeflow.
- Orchestrazione automatica: SDP orchestra automaticamente i passaggi di elaborazione (denominati "flussi") per garantire l'ordine di esecuzione corretto e il livello massimo di parallelismo per ottenere prestazioni ottimali. Inoltre, le pipeline riprovano automaticamente ed in modo efficiente gli errori temporanei. Il processo di ripetizione dei tentativi inizia con l'unità più granulare e conveniente: l'attività Spark. Se il nuovo tentativo a livello di attività ha esito negativo, SDP continua a ripetere il flusso e infine l'intera pipeline, se necessario.
- Elaborazione dichiarativa: SDP fornisce funzioni dichiarative che possono ridurre centinaia o persino migliaia di righe di codice Spark e Structured Streaming manuale a poche righe. L'API SDP AUTO CDC semplifica l'elaborazione di eventi Change Data Capture (CDC) con supporto sia per scD type 1 che per scD Type 2. Elimina la necessità di codice manuale per gestire gli eventi non ordinati e non richiede una comprensione della semantica di streaming o dei concetti come le filigrane.
- Elaborazione incrementale: SDP fornisce un motore di elaborazione incrementale per le viste materializzate. Per usarla, si scrive la logica di trasformazione con la semantica batch e il motore elabora solo i nuovi dati e le modifiche nelle origini dati quando possibile. L'elaborazione incrementale riduce la rielaborazione inefficiente quando si verificano nuovi dati o modifiche nelle origini ed elimina la necessità di gestire l'elaborazione incrementale del codice manuale.
Concetti chiave
Il diagramma seguente illustra i concetti più importanti delle pipeline dichiarative di Lakeflow Spark.
Set di dati
Una pipeline produce tre tipi di set di dati, ognuno con semantica di elaborazione diversa:
| Tipo di set di dati | Modalità di elaborazione dei record |
|---|---|
| Tabella di streaming | Ogni record viene elaborato esattamente una volta, supponendo una sorgente a sola aggiunta. Le tabelle di streaming sono adatte per l'inserimento e l'elaborazione incrementale dei dati in continua crescita. |
| Vista materializzata | I risultati vengono ricalcolate in base alle esigenze per riflettere lo stato corrente dei dati. Le viste materializzate sono adatte per trasformazioni, aggregazioni o risultati di pre-calcolo utilizzati da più set di dati downstream. |
| View | Valutato su richiesta, non salvato in modo permanente. Usare le viste per le trasformazioni intermedie e i controlli che non devono essere pubblicati in un catalogo. |
Una tabella di streaming è una forma di tabella gestita di Unity Catalog che è anche una destinazione di streaming. Una tabella di streaming può avere uno o più flussi di streaming (Append, AUTO CDC) scritti in esso. È possibile definire i flussi di streaming in modo esplicito e separatamente dalla tabella di streaming di destinazione oppure in modo implicito come parte di una definizione di tabella di streaming.
Una vista materializzata è anche una forma di tabella gestita da Unity Catalog ed è un obiettivo per l'elaborazione batch. Una vista materializzata può avere uno o più flussi di visualizzazione materializzati scritti in esso. Le viste materializzate differiscono dalle tabelle di streaming in cui i flussi vengono sempre definiti in modo implicito come parte della definizione di vista materializzata.
Per informazioni dettagliate, vedere Tabelle di streaming e viste materializzate.
Quando usare viste, viste materializzate e tabelle di streaming
Quando si implementano query della pipeline, scegliere il tipo di set di dati più adatto al caso d'uso.
Considera l'uso di una visualizzazione per:
- Suddividere una query di grandi dimensioni o complessa in query più facili da gestire.
- Convalidare i risultati intermedi usando le aspettative.
- Ridurre i costi di archiviazione e calcolo per i risultati che non è necessario rendere persistenti. Poiché le tabelle sono materializzate, richiedono risorse di calcolo e archiviazione aggiuntive.
È consigliabile usare una vista materializzata quando:
- Diverse query downstream fanno uso della tabella. Poiché le viste vengono calcolate su richiesta, una vista viene ricalcolata ogni volta che viene interrogata.
- Altre pipeline, processi di lavoro o query sono consumatrici della tabella. Poiché le viste non sono materializzate, possono essere utilizzate solo all'interno della stessa pipeline.
- Si desidera esaminare i risultati di una query durante lo sviluppo. Poiché le tabelle sono materializzate e possono essere sottoposte a query all'esterno della pipeline, l'uso di tabelle durante lo sviluppo può aiutare a convalidare la correttezza dei calcoli. Dopo la convalida, convertite le query che non richiedono la materializzazione in viste.
Valuta l'uso di una tabella di streaming quando:
- Una query è definita rispetto a un'origine dati in continua o graduale crescita.
- I risultati delle query devono essere calcolati in modo incrementale.
- La pipeline richiede un'elevata velocità di trasmissione e bassa latenza.
Note
Le tabelle di streaming vengono sempre definite in base alle origini di streaming. È anche possibile usare fonti di streaming con AUTO CDC ... INTO per applicare gli aggiornamenti dai feed CDC. Consulta le API AUTO CDC: semplificare la cattura dei dati modificati con le pipeline.
Flows
Un flusso è il concetto di elaborazione dei dati di base in SDP che supporta sia la semantica di streaming che quella batch. Un flusso legge i dati da un'origine, applica la logica di elaborazione definita dall'utente e scrive il risultato in una destinazione. SDP condivide lo stesso tipo di flusso di streaming (Append, Update, Complete) di Spark Structured Streaming. (Attualmente, sono esposti solo i flussi Append e Update.) Per ulteriori dettagli, vedere modalità di output in Structured Streaming.
Le pipeline dichiarative di Lakeflow Spark offrono anche tipi di flusso aggiuntivi:
- AUTO CDC è un flusso di streaming univoco in Lakeflow SDP che gestisce gli eventi CDC non in ordine e supporta sia SCD Type 1 che SCD Type 2. Le Auto CDC non sono disponibili nelle Pipeline Dichiarative di Apache Spark.
- La vista materializzata è un flusso batch in SDP che elabora solo i nuovi dati e le modifiche nelle tabelle di origine quando possibile.
Per informazioni dettagliate, vedere Caricare ed elaborare i dati in modo incrementale con i flussi dichiarativi di Lakeflow Spark.
Sinks
Un sink è una destinazione di streaming per una pipeline e supporta tabelle Delta, argomenti apache Kafka, argomenti di Azure EventHubs e origini dati Python personalizzate. Un sink può avere uno o più flussi di streaming (Accodamento, Aggiornamento) scritti in esso.
Per informazioni dettagliate, vedere Sink nelle pipeline dichiarative di Lakeflow Spark.
Pipelines
Una pipeline è l'unità di sviluppo ed esecuzione in Lakeflow Spark Declarative Pipelines ed è il contenitore per i flussi, le tabelle di streaming, le viste materializzate e i sink definiti dall'utente. Si usa SDP definendo questi oggetti nel codice sorgente della pipeline e quindi eseguendo la pipeline. Durante l'esecuzione della pipeline, analizza le dipendenze degli oggetti definiti e orchestra automaticamente l'ordine di esecuzione e parallelizzazione.
Per informazioni dettagliate, vedere Che cosa sono le pipeline?
È anche possibile definire viste materializzate autonome e tabelle di streaming all'esterno di una pipeline, in cui Azure Databricks gestisce automaticamente la pipeline. Per confrontare i due approcci, vedere Pipeline autonome e Pipeline dichiarative di Lakeflow Spark.
Inserimento dati
Le pipeline supportano tutte le origini dati disponibili in Azure Databricks. Databricks consiglia di utilizzare le tabelle di streaming per la maggior parte dei casi d'uso di inserimento dati. Per i file archiviati nell'object storage cloud, Auto Loader fornisce un caricamento incrementale e idempotente. Per i dati in streaming, le pipeline possono acquisire direttamente dai message bus come Apache Kafka, Hub eventi di Azure, Amazon Kinesis e Google Pub/Sub. Vedere Caricare i dati nelle pipeline.
Qualità dei dati
Le aspettative sono clausole facoltative nei set di dati che convalidano i dati mentre passano attraverso la pipeline. Si definisce un'aspettativa come vincolo booleano SQL e si specifica cosa accade quando un record ha esito negativo: avvisare, eliminare il record o interrompere l'aggiornamento. Vedi Gestisci la qualità dei dati con le aspettative della pipeline.
Integrazione delta
Tutte le tabelle create e gestite dalle pipeline sono tabelle Delta. Hanno le stesse garanzie di Delta Lake, incluse transazioni ACID, tempo di spostamento e applicazione dello schema. Le pipeline aggiungono ulteriori proprietà della tabella ed eseguono la manutenzione automatica tramite l'ottimizzazione predittiva, incluse le operazioni OPTIMIZE e VACUUM. Vedere Che cos'è Delta Lake in Azure Databricks?.