Condividi tramite


Sviluppare Pipeline Dichiarative di Lakeflow Spark

Lo sviluppo e il test del codice della pipeline differiscono da altri carichi di lavoro di Apache Spark. Questo articolo offre una panoramica delle funzionalità supportate, delle procedure consigliate e delle considerazioni per lo sviluppo di codice della pipeline. Per altre raccomandazioni e procedure consigliate, vedere Applicazione di procedure consigliate per lo sviluppo software e DevOps alle pipeline.

Annotazioni

È necessario aggiungere codice sorgente a una configurazione della pipeline per convalidare il codice o eseguire un aggiornamento. Vedere Configurare le pipeline.

Quali file sono validi per il codice sorgente della pipeline?

Il codice della pipeline può essere Python o SQL. È possibile avere una combinazione di file di codice sorgente Python e SQL che eseguono il backup di una singola pipeline, ma ogni file può contenere solo un linguaggio. Vedere Sviluppare codice della pipeline con Python e Sviluppare codice di pipeline dichiarative Spark di Lakeflow con SQL.

I file di origine per le pipeline vengono archiviati nell'area di lavoro. I file dell'area di lavoro rappresentano script Python o SQL creati nell'editor delle pipeline di Lakeflow. È anche possibile modificare i file in locale nell'IDE preferito e sincronizzare l'area di lavoro. Per informazioni sui file nell'area di lavoro, vedere Che cosa sono i file dell'area di lavoro?. Per informazioni sulla modifica con l'editor di Pipelines Lakeflow, vedere Sviluppare ed eseguire il debug di pipeline ETL con l'editor di Pipelines Lakeflow. Per informazioni sulla creazione di codice in un IDE locale, vedere Sviluppare codice della pipeline nell'ambiente di sviluppo locale.

Se si sviluppa codice Python come moduli o librerie, è necessario installare e importare il codice e quindi chiamare i metodi da un file Python configurato come codice sorgente. Vedere Gestire le dipendenze python per le pipeline.

Annotazioni

Se è necessario usare comandi SQL arbitrari in un notebook Python, è possibile usare il modello di sintassi spark.sql("<QUERY>") per eseguire SQL come codice Python.

Le funzioni del catalogo di Unity consentono di registrare funzioni python arbitrarie definite dall'utente per l'uso in SQL. Si veda Funzioni definite dall'utente (UDF) nel catalogo Unity.

Panoramica delle funzionalità di sviluppo delle pipeline

Le pipeline estendono e sfruttano molte funzionalità di sviluppo di Azure Databricks e introducono nuove funzionalità e concetti. La tabella seguente offre una breve panoramica dei concetti e delle funzionalità che supportano lo sviluppo di codice della pipeline:

Caratteristica / Funzionalità Description
Modalità di sviluppo L'esecuzione di pipeline in modo interattivo (scegliendo di eseguire l'aggiornamento tramite l'editor delle pipeline di Lakeflow) userà la modalità di sviluppo. Le nuove pipeline vengono eseguite con la modalità di sviluppo disattivata quando vengono eseguite automaticamente tramite una pianificazione o un trigger automatizzato. Vedere Modalità di sviluppo.
Esecuzione asciutta Un aggiornamento di simulazione verifica la correttezza del codice sorgente della pipeline senza eseguire un aggiornamento su nessuna tabella. Vedere Controllare la presenza di errori in una pipeline senza attendere l'aggiornamento delle tabelle.
Editor di pipeline di Lakeflow I file Python e SQL configurati come codice sorgente per le pipeline offrono opzioni interattive per la convalida del codice e l'esecuzione degli aggiornamenti. Vedere Sviluppare ed eseguire il debug di pipeline ETL con l'editor delle pipeline di Lakeflow.
Parametri Sfruttare i parametri nelle configurazioni del codice sorgente e della pipeline per semplificare il test e l'estendibilità. Consulta Usare i parametri con le pipeline.
Pacchetti di Asset di Databricks I bundle di asset di Databricks consentono di spostare le configurazioni della pipeline e il codice sorgente tra aree di lavoro. Vedere Convertire una pipeline in un progetto di aggregazione di asset di Databricks.

Creare set di dati di esempio per lo sviluppo e il test

Databricks consiglia di creare set di dati di sviluppo e test per testare la logica della pipeline con dati previsti e record potenzialmente non validi o danneggiati. Esistono diversi modi per creare set di dati che possono essere utili per lo sviluppo e il test, tra cui:

  • Selezionare un subset di dati da un set di dati di produzione.
  • Usare dati anonimi o generati artificialmente per le origini contenenti informazioni personali. Per un'esercitazione che usa la faker libreria per generare dati per i test, vedere Esercitazione: Creare una pipeline ETL usando Change Data Capture.
  • Creare dati di test con risultati ben definiti in base alla logica di trasformazione downstream.
  • Prevedere potenziali danneggiamenti dei dati, record in formato non valido e modifiche ai dati upstream creando record che interrompono le aspettative dello schema dei dati.

Ad esempio, se si dispone di un file che definisce un set di dati usando il codice seguente:

CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
  "/production/data",
  format => "json")

È possibile creare un set di dati di esempio contenente un subset dei record usando una query simile alla seguente:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading

Nell'esempio seguente viene illustrato il filtro dei dati pubblicati per creare un subset dei dati di produzione per lo sviluppo o il test:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY

Per usare questi diversi set di dati, creare più pipeline con il codice sorgente che implementa la logica di trasformazione. Ogni pipeline può leggere i dati dal input_data set di dati, ma è configurato per includere il file che crea il set di dati specifico dell'ambiente.

Come elaborano i dati i dataset della pipeline?

Nella tabella seguente viene descritto il modo in cui le viste materializzate, le tabelle di streaming e le viste elaborano i dati:

Tipo di set di dati Come vengono elaborati i record tramite query definite?
Tabella di streaming Ogni record viene elaborato esattamente una volta. Si presuppone un'origine di sola appensione.
Vista materializzata I record vengono elaborati in base alle esigenze per restituire risultati accurati per lo stato dei dati corrente. Le viste materializzate devono essere usate per le attività di elaborazione dei dati, ad esempio trasformazioni, aggregazioni o pre-elaborazione di query lente e calcoli usati di frequente. I risultati vengono memorizzati nella cache tra gli aggiornamenti.
View I record vengono elaborati ogni volta che la vista viene interrogata. Usare le viste per trasformazioni intermedie e controlli di qualità dei dati che non devono essere pubblicati nei set di dati pubblici.

Dichiara i tuoi primi set di dati nelle pipeline

Le pipeline introducono una nuova sintassi per Python e SQL. Per informazioni sulle nozioni di base della sintassi della pipeline, vedere Sviluppare codice della pipeline con Python e Sviluppare codice dichiarativo di Lakeflow Spark con SQL.

Annotazioni

Le pipeline separano le definizioni dei set di dati dall'elaborazione degli aggiornamenti e l'origine della pipeline non è destinata all'esecuzione interattiva.

Come si configurano le pipeline?

Le impostazioni per una pipeline rientrano in due categorie generali:

  1. Configurazioni che definiscono una raccolta di file (nota come codice sorgente) che usano la sintassi della pipeline per dichiarare i set di dati.
  2. Configurazioni che controllano l'infrastruttura della pipeline, la gestione delle dipendenze, la modalità di elaborazione degli aggiornamenti e la modalità di salvataggio delle tabelle nell'area di lavoro.

La maggior parte delle configurazioni è facoltativa, ma alcune richiedono un'attenzione attenta, soprattutto quando si configurano pipeline di produzione. Questi includono:

  • Per rendere disponibili i dati all'esterno della pipeline, è necessario dichiarare uno schema di destinazione per la pubblicazione nel metastore Hive o un catalogo di destinazione e uno schema di destinazione per la pubblicazione nel catalogo Unity.
  • Le autorizzazioni di accesso ai dati vengono configurate tramite il cluster usato per l'esecuzione. Verificare che il cluster disponga delle autorizzazioni appropriate configurate per le origini dati e il percorso di archiviazione di destinazione, se specificato.

Per informazioni dettagliate sull'uso di Python e SQL per scrivere codice sorgente per le pipeline, vedere Informazioni di riferimento sul linguaggio SQL della pipeline e Informazioni di riferimento sul linguaggio Python per le pipeline dichiarative di Lakeflow Spark.

Per altre informazioni sulle impostazioni e le configurazioni della pipeline, vedere Configurare le pipeline.

Distribuisci la tua prima pipeline e attiva gli aggiornamenti

Per elaborare i dati con SDP, configurare una pipeline. Dopo aver configurato una pipeline, è possibile attivare un aggiornamento per calcolare i risultati per ogni set di dati nella pipeline. Per iniziare a usare le pipeline, vedere Esercitazione: Creare una pipeline ETL usando Change Data Capture.

Che cos'è un aggiornamento della pipeline?

Le pipeline implementano l'infrastruttura e ricalcolano lo stato dei dati quando si avvia un aggiornamento . Un aggiornamento esegue le operazioni seguenti:

  • Avvia un cluster con la configurazione corretta.
  • Individua tutte le tabelle e le viste definite e verifica la presenza di eventuali errori di analisi, ad esempio nomi di colonna non validi, dipendenze mancanti ed errori di sintassi.
  • Crea o aggiorna tabelle e viste con i dati più recenti disponibili.

Le pipeline possono essere eseguite in modo continuo o in base a una pianificazione a seconda dei requisiti di costo e latenza del caso d'uso. Vedere Eseguire un aggiornamento della pipeline.

Inserire dati con pipeline

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 in arrivo nell'archiviazione di oggetti cloud, Databricks consiglia il caricatore automatico. È possibile acquisire direttamente i dati tramite una pipeline dalla maggior parte dei bus di messaggi.

Per altre informazioni sulla configurazione dell'accesso all'archiviazione cloud, vedere Configurazione dell'archiviazione cloud.

Per i formati non supportati dal caricatore automatico, è possibile usare Python o SQL per eseguire query su qualsiasi formato supportato da Apache Spark. Vedere Caricare i dati nelle pipeline.

Monitorare e applicare la qualità dei dati

È possibile usare le aspettative per specificare i controlli di qualità dei dati sul contenuto di un set di dati. A differenza di un vincolo CHECK in un database tradizionale che impedisce l'aggiunta di record che non soddisfano il vincolo, le aspettative offrono flessibilità durante l'elaborazione dei dati che non soddisfano i requisiti di qualità dei dati. Questa flessibilità consente di elaborare e archiviare i dati che si prevede siano disordinati e che devono soddisfare requisiti di qualità rigorosi. Vedi Gestisci la qualità dei dati con le aspettative della pipeline.

SDP estende la funzionalità di Delta Lake. Poiché le tabelle create e gestite dalle pipeline sono tabelle Delta, hanno le stesse garanzie e funzionalità fornite da Delta Lake. Vedere Che cos'è Delta Lake in Azure Databricks?.

Le pipeline aggiungono diverse proprietà di tabella oltre alle numerose proprietà della tabella che possono essere impostate in Delta Lake. Vedere Informazioni di riferimento sulle proprietà della pipeline e informazioni di riferimento sulle proprietà della tabella Delta.

Modalità di creazione e gestione delle tabelle da parte delle pipeline

Azure Databricks gestisce automaticamente le tabelle create dalle pipeline, determinando la modalità di elaborazione degli aggiornamenti per calcolare correttamente lo stato corrente di una tabella ed eseguendo diverse attività di manutenzione e ottimizzazione.

Per la maggior parte delle operazioni, è consigliabile consentire alla pipeline di elaborare tutti gli aggiornamenti, gli inserimenti e le eliminazioni in una tabella di destinazione. Per informazioni dettagliate e limitazioni, vedere Conservare le eliminazioni manuali o gli aggiornamenti.

Attività di manutenzione eseguite dalle pipeline

Azure Databricks esegue attività di manutenzione sulle tabelle gestite dalle pipeline in modo ottimale usando l'ottimizzazione predittiva. La manutenzione può migliorare le prestazioni delle query e ridurre i costi rimuovendo le versioni precedenti delle tabelle. Sono incluse le operazioni complete OPTIMIZE e VACUUM . Le attività di manutenzione vengono eseguite in base a una pianificazione definita dall'ottimizzazione predittiva e solo se un aggiornamento della pipeline è stato eseguito dopo la manutenzione precedente.

Per comprendere la frequenza con cui viene eseguita l'ottimizzazione predittiva e per comprendere i costi di manutenzione, vedere Informazioni di riferimento sulla tabella di sistema di ottimizzazione predittiva.

Limitazioni

Per un elenco delle limitazioni, vedere Limitazioni della pipeline.

Per un elenco dei requisiti e delle limitazioni specifici per l'uso delle pipeline con Unity Catalog, vedere Usare il catalogo Unity con le pipeline

Risorse aggiuntive