Uso del catalogo Unity con Structured Streaming

Questa pagina illustra come usare Structured Streaming con Unity Catalog per gestire la governance dei dati per i carichi di lavoro incrementali e di streaming in Azure Databricks.

Quali funzionalità di Structured Streaming supporta Unity Catalog?

Il catalogo unity non aggiunge limiti espliciti per le origini e i sink di Structured Streaming disponibili in Azure Databricks.

Con Unity Catalog e Structured Streaming è possibile:

  • Trasmettere dati da tabelle gestite ed esterne. Vedere tabelle gestite di Unity Catalog in Azure Databricks per Delta Lake e Apache Iceberg.
  • Usare posizioni esterne gestite dal catalogo unity per interagire con i dati usando gli URI di archiviazione degli oggetti.
  • Scrivere nelle tabelle esterne utilizzando i nomi delle tabelle o i percorsi dei file. Per interagire con le tabelle gestite, è necessario usare il nome della tabella.

Per i checkpoint di Structured Streaming, è necessario utilizzare percorsi in posizioni esterne gestite da Unity Catalog. Per altre informazioni sulla connessione sicura dell'archiviazione con il catalogo unity, vedere Connettersi all'archiviazione di oggetti cloud tramite il catalogo unity.

Leggi una vista del catalogo Unity come flusso

In Databricks Runtime 14.3 LTS e versioni successive è possibile usare Structured Streaming per leggere dalle visualizzazioni registrate con Unity Catalog. Le tabelle sottostanti devono usare il formato Delta Lake. Per altre limitazioni, vedere Limitazioni.

Per leggere una visualizzazione con Structured Streaming, usare il .table() metodo con l'identificatore della visualizzazione:

df = (spark.readStream
  .table("demoView")
)

Gli utenti devono disporre di SELECT privilegi sulla visualizzazione di destinazione.

Se si modifica la definizione della vista per aggiungere o modificare le tabelle a cui si fa riferimento nella vista, non è possibile usare lo stesso checkpoint di streaming.

Opzioni di streaming supportate

Il lettore di streaming applica le opzioni ai file e ai metadati delle tabelle Delta sottostanti per la vista specificata.

Sono supportate le opzioni seguenti:

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

Le operazioni di lettura nelle viste con UNION ALL non supportano le opzioni withEventTimeOrder e startingVersion.

Se si forniscono opzioni non supportate, ad esempio readChangeFeed, Spark genera questa eccezione:

AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.

Operazioni di streaming supportate

Le operazioni supportate includono:

Operation Descrizione Operator Esempio
Progetto Controlla le autorizzazioni a livello di colonna SELECT... FROM... CREATE VIEW project_view AS SELECT id, value FROM source_table
Filter Controlla le autorizzazioni a livello di riga WHERE... CREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
Unione di tutti Risultati di più tabelle UNION ALL CREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2

Le operazioni non supportate includono aggregazioni, ordinamento e funzioni con valori di tabella, table_changes()ad esempio . Per informazioni dettagliate sulle funzioni con valori di tabella, vedere Chiamata di funzione con valori di tabella (TVF).

Se si esegue uno streaming da una vista con un'operazione non supportata, Spark solleva questa eccezione:

UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.

Limitazioni