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.
Una tabella di streaming è una tabella Delta con supporto aggiuntivo per lo streaming o l'elaborazione incrementale dei dati. Una tabella di streaming può essere l'obiettivo di uno o più flussi in una pipeline.
Per indicazioni su quando usare tabelle di streaming rispetto a viste o viste materializzate, vedere Che cosa sono le pipeline?.
Le tabelle di streaming sono una scelta ottimale per l'inserimento dei dati per i motivi seguenti:
- Ogni riga di input viene gestita una sola volta, un approccio che rispecchia la stragrande maggioranza dei carichi di lavoro di inserimento, ovvero l'aggiunta o l'aggiornamento delle righe in una tabella.
- Possono gestire grandi volumi di dati solo accodabili.
Le tabelle di streaming sono anche una buona scelta per le trasformazioni di streaming a bassa latenza, perché possono ragionare su righe e finestre di tempo, gestire volumi elevati di dati e offrire un'elaborazione a bassa latenza.
Il diagramma seguente mostra come i flussi leggono da origini di streaming e scrivono in modo incrementale in una tabella di streaming all'interno di una pipeline.
In ogni aggiornamento, i flussi associati a una tabella di streaming leggono le informazioni modificate in un'origine di streaming e aggiungono nuove informazioni a tale tabella.
Le tabelle di streaming sono di proprietà e aggiornate da una singola pipeline. Le tabelle di streaming vengono definite in modo esplicito nel codice sorgente della pipeline. Le tabelle definite da una pipeline non possono essere modificate o aggiornate da altre pipeline. È possibile definire più flussi da aggiungere a una singola tabella di streaming.
Azure Databricks crea tabelle interne per supportare l'elaborazione delle tabelle di streaming. Queste tabelle vengono visualizzate in system.information_schema.tables ma non sono visibili in Esplora cataloghi o in altre pagine dell'interfaccia utente dell'area di lavoro.
Note
Quando si crea una tabella di streaming autonoma, all'esterno delle pipeline dichiarative di Lakeflow Spark, Azure Databricks crea una pipeline usata per aggiornare la tabella. È possibile visualizzare la pipeline selezionando ETL. Le tabelle di streaming indipendenti sono di tipo MV/ST.
Per altre informazioni sui flussi, vedere Caricare ed elaborare i dati in modo incrementale con i flussi dichiarativi di Lakeflow Spark.
Tabelle di streaming per l'inserimento
Le tabelle di streaming sono progettate per origini dati di sola aggiunta e processano gli input una sola volta. Ciò li rende particolarmente adatti per i carichi di lavoro di inserimento in cui i dati arrivano continuamente e devono essere acquisiti in modo affidabile senza rielaborare i record esistenti. Azure Databricks supporta l'acquisizione dei dati nelle tabelle di streaming dall'archiviazione di oggetti nel cloud, usando Auto Loader, e dai bus di messaggistica in streaming come Apache Kafka, Hub eventi di Azure e Google Pub/Sub. Per esempi di procedure ed esempi di codice per l'inserimento, vedere Caricare i dati nelle pipeline.
Note
Per trasmettere i dati di origine modificati nel tempo (ad esempio, i record aggiornati o eliminati nell'origine), usare AUTO CDC per applicare tali modifiche a una tabella di streaming anziché accodarle. Consulta Change Data Capture e istantanee.
Il diagramma seguente illustra il funzionamento delle tabelle di streaming solo append.
Una riga che è già stata aggiunta a una tabella di streaming non sarà nuovamente oggetto di query con successivi aggiornamenti nella pipeline. Se si modifica la query , ad esempio da SELECT LOWER (name) a SELECT UPPER (name), le righe esistenti non verranno aggiornate in lettere maiuscole, ma le nuove righe saranno maiuscole. È possibile attivare un aggiornamento completo per rieseguire una query su tutti i dati precedenti della tabella di origine per aggiornare tutte le righe nella tabella di streaming.
Tabelle in streaming e streaming a bassa latenza
Le tabelle di streaming sono progettate per lo streaming a bassa latenza con uno stato delimitato. Le tabelle di streaming usano la gestione dei checkpoint, che li rende particolarmente adatti per lo streaming a bassa latenza. Tuttavia, si aspettano flussi che sono naturalmente delimitati o delimitati con una filigrana.
Un flusso naturalmente delimitato viene prodotto da una sorgente di dati di streaming che ha un inizio e una fine ben definiti. Un esempio di flusso delimitato naturalmente è la lettura dei dati da una directory di file in cui non vengono aggiunti nuovi file dopo l'inserimento di un batch iniziale di file. Il flusso viene considerato delimitato perché il numero di file è finito e il flusso termina dopo l'elaborazione di tutti i file.
È anche possibile usare una filigrana per delimitare un flusso. Una filigrana in Structured Streaming è un meccanismo che consente di gestire i dati in ritardo specificando per quanto tempo il sistema deve attendere gli eventi ritardati prima di considerare l'intervallo di tempo come completato. Un flusso illimitato che non dispone di una filigrana può causare un fallimento della pipeline a causa della pressione della memoria.
Per i carichi di lavoro operativi che richiedono la latenza più bassa possibile, è possibile eseguire la pipeline in modalità tempo reale per elaborare i record con una latenza end-to-end inferiore al secondo.
Per ulteriori informazioni consulta:
- Usare la modalità in tempo reale nelle pipeline dichiarative di Lakeflow Spark
- Ottimizza l'elaborazione stateful con watermark
Limitazioni delle tabelle di streaming
Le tabelle di streaming presentano le limitazioni seguenti:
-
Evoluzione limitata: È possibile modificare la query senza ricompilare l'intero set di dati. Senza un aggiornamento completo, una tabella di streaming vede ogni riga una sola volta, quindi query diverse avranno elaborato righe diverse. Ad esempio, se si aggiunge
UPPER()a un campo nella query, solo le righe elaborate dopo la modifica saranno maiuscole. Ciò significa che è necessario essere consapevoli di tutte le versioni precedenti della query in esecuzione nel set di dati. Per rielaborare le righe esistenti elaborate prima della modifica, è necessario un aggiornamento completo. - Gestione dello stato: Le tabelle di streaming sono a bassa latenza e richiedono flussi naturalmente delimitati o delimitati da una filigrana. Per altre informazioni, vedere Ottimizzare l'elaborazione con stato con filigrane.
- I join non vengono ricalcolati: I join nelle tabelle di streaming non vengono ricalcolati quando le dimensioni cambiano. Questa caratteristica può essere utile per scenari "veloci ma non corretti". Se si desidera che la visualizzazione sia sempre corretta, è possibile usare una vista materializzata. Le viste materializzate sono sempre corrette perché ricompilano automaticamente i join quando le dimensioni cambiano. Per ulteriori informazioni, vedere le viste materializzate . Per un esempio di join tra un flusso e una tabella di dimensioni statica, consulta Join tra flussi e dati statici.
-
Nessun
CLONEsupporto: le tabelle di streaming non possono essere usate come origine o destinazione di un clone profondo o superficiale. Per altri comandi non supportati, vedere Limitazioni. -
REFRESHprivilegio necessario per visualizzare la pipeline: per visualizzare la pipeline che esegue il backup di una tabella di streaming, un utente non amministratore deve disporre delREFRESHprivilegio per la tabella di streaming oltre alle autorizzazioni per la pipeline. Vedere Chi può visualizzare una pipeline e il relativo output?