Caricare dati usando tabelle di streaming in Databricks SQL

Importante

Questa funzionalità è disponibile in anteprima pubblica. Per iscriversi per l'accesso, compilare questo modulo.

Databricks consiglia di usare le tabelle di streaming per inserire dati usando Databricks SQL. Una tabella di streaming è una tabella gestita di Unity Catalog con supporto aggiuntivo per lo streaming o l'elaborazione incrementale dei dati. Per ogni tabella di streaming viene creata automaticamente una pipeline DLT. È possibile usare le tabelle di streaming per il caricamento incrementale dei dati da Kafka e dall'archiviazione di oggetti cloud.

Questo articolo illustra l'uso delle tabelle di streaming per caricare i dati dall'archiviazione di oggetti cloud configurata come volume del catalogo Unity (scelta consigliata) o come posizione esterna.

Nota

Per informazioni su come usare le tabelle Delta Lake come origini di streaming e sink, vedere Letture e scritture di streaming delle tabelle Delta.

Prima di iniziare

Prima di iniziare, verificare di disporre di quanto segue:

  • Un account Azure Databricks con serverless abilitato. Per altre informazioni, vedere Abilitare sql warehouse serverless.

  • Un'area di lavoro con il catalogo Unity abilitato. Per altre informazioni, vedere Configurare e gestire il catalogo Unity.

  • Un'istanza di SQL Warehouse che usa il Current canale.

  • Per eseguire query sulle tabelle di streaming create da una pipeline di tabelle live Delta, è necessario usare un ambiente di calcolo condiviso usando Databricks Runtime 13.3 LTS e versioni successive o sql warehouse. Le tabelle di streaming create in una pipeline abilitata per Il catalogo Unity non possono essere sottoposte a query da cluster di isolamento o assegnati.

  • Privilegio READ FILES in una posizione esterna del catalogo Unity. Per informazioni, vedere Creare una posizione esterna per connettere l'archiviazione cloud ad Azure Databricks.

  • Privilegio USE CATALOG per il catalogo in cui si crea la tabella di streaming.

  • Privilegio USE SCHEMA per lo schema in cui si crea la tabella di streaming.

  • Privilegio CREATE TABLE per lo schema in cui si crea la tabella di streaming.

  • Percorso dei dati di origine.

    Esempio di percorso del volume: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    Esempio di percorso esterno: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    Nota

    Questo articolo presuppone che i dati da caricare si trovino in un percorso di archiviazione cloud che corrisponde a un volume del catalogo Unity o a una posizione esterna a cui si ha accesso.

Individuare e visualizzare in anteprima i dati di origine

  1. Nella barra laterale dell'area di lavoro fare clic su Query e quindi su Crea query.

  2. Nell'editor di query selezionare un'istanza di SQL Warehouse che usa il Current canale dall'elenco a discesa.

  3. Incollare il codice seguente nell'editor, sostituendo i valori tra parentesi angolari (<>) per le informazioni che identificano i dati di origine e quindi fare clic su Esegui.

    Nota

    È possibile che si verifichino errori di inferenza dello schema durante l'esecuzione della read_files funzione con valori di tabella se le impostazioni predefinite per la funzione non possono analizzare i dati. Ad esempio, potrebbe essere necessario configurare la modalità a più righe per i file CSV o JSON su più righe. Per un elenco delle opzioni del parser, vedere read_files funzione con valori di tabella.

    /* Discover your data in a volume */
    LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>"
    
    /* Preview your data in a volume */
    SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10
    
    /* Discover your data in an external location */
    LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
    

Caricare dati in una tabella di streaming

Per creare una tabella di streaming dai dati nell'archivio oggetti cloud, incollare quanto segue nell'editor di query e quindi fare clic su Esegui:

/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')

/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')

Aggiornare una tabella di streaming usando una pipeline DLT

Questa sezione descrive i modelli per aggiornare una tabella di streaming con i dati più recenti disponibili dalle origini definite nella query.

CREATE le operazioni per le tabelle di streaming usano un databricks SQL warehouse per la creazione iniziale e il caricamento dei dati nella tabella di streaming. REFRESH le operazioni per le tabelle di streaming usano dLT (Delta Live Tables). Per ogni tabella di streaming viene creata automaticamente una pipeline DLT. Quando viene aggiornata una tabella di streaming, viene avviato un aggiornamento della pipeline DLT per elaborare l'aggiornamento.

Dopo aver eseguito il REFRESH comando, viene restituito il collegamento della pipeline DLT. È possibile usare il collegamento della pipeline DLT per controllare lo stato dell'aggiornamento.

Nota

Solo il proprietario della tabella può aggiornare una tabella di streaming per ottenere i dati più recenti. L'utente che crea la tabella è il proprietario e il proprietario non può essere modificato.

Vedere Che cos'è le tabelle live Delta?.

Inserire solo nuovi dati

Per impostazione predefinita, la read_files funzione legge tutti i dati esistenti nella directory di origine durante la creazione della tabella e quindi elabora i nuovi record in arrivo con ogni aggiornamento.

Per evitare di inserire dati già esistenti nella directory di origine al momento della creazione della tabella, impostare l'opzione includeExistingFiles su false. Ciò significa che solo i dati che arrivano nella directory dopo l'elaborazione della creazione della tabella. Ad esempio:

CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
  'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
  includeExistingFiles => false)

Aggiornare completamente una tabella di streaming

L'aggiornamento completo riprocessa tutti i dati disponibili nell'origine con la definizione più recente. Non è consigliabile chiamare aggiornamenti completi sulle origini che non mantengono l'intera cronologia dei dati o hanno brevi periodi di conservazione, ad esempio Kafka, perché l'aggiornamento completo tronca i dati esistenti. Potrebbe non essere possibile recuperare i dati obsoleti se i dati non sono più disponibili nell'origine.

Ad esempio:

REFRESH STREAMING TABLE my_bronze_table FULL

Pianificare una tabella di streaming per l'aggiornamento automatico

Per configurare una tabella di streaming per l'aggiornamento automatico in base a una pianificazione definita, incollare quanto segue nell'editor di query e quindi fare clic su Esegui:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

Ad esempio, aggiornare le query di pianificazione, vedere ALTER STREAMING TABLE.

Tenere traccia dello stato di un aggiornamento

È possibile visualizzare lo stato di un aggiornamento della tabella di streaming visualizzando la pipeline che gestisce la tabella di streaming nell'interfaccia utente delle tabelle live delta o visualizzando le informazioni di aggiornamento restituite dal DESCRIBE EXTENDED comando per la tabella di streaming.

DESCRIBE EXTENDED <table-name>

Inserimento in streaming da Kafka

Per un esempio di inserimento in streaming da Kafka, vedere read_kafka.

Concedere agli utenti l'accesso a una tabella di streaming

Per concedere agli utenti il SELECT privilegio nella tabella di streaming in modo che possano eseguire query, incollare quanto segue nell'editor di query e quindi fare clic su Esegui:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

Per altre informazioni sulla concessione di privilegi per gli oggetti a protezione diretta di Unity Catalog, vedere Privilegi del catalogo Unity e oggetti a protezione diretta.

Limitazioni

  • Le tabelle di streaming SQL di Databricks non sono supportate nelle aree Stati Uniti centro-meridionali e Stati Uniti occidentali 2.

Risorse aggiuntive