Condividi tramite


Utilizzo del catalogo Unity con Structured Streaming

Usare Structured Streaming con Unity Catalog per gestire la governance dei dati per i carichi di lavoro incrementali e di streaming in Azure Databricks. Questo documento illustra le funzionalità supportate e suggerisce procedure consigliate per l'uso di Unity Catalog e Structured Streaming insieme.

Quali funzionalità di Structured Streaming supporta Unity Catalog?

Unity Catalog non aggiunge limiti espliciti per origini e sink Structured Streaming disponibili in Azure Databricks. Il modello di governance dei dati di Unity Catalog consente di trasmettere dati da tabelle gestite ed esterne in Unity Catalog. È anche possibile usare percorsi esterni gestiti da Unity Catalog per interagire con i dati usando gli URI di archiviazione degli oggetti. È possibile scrivere in tabelle esterne usando nomi di tabella o percorsi di file. È necessario interagire con le tabelle gestite in Unity Catalog usando il nome tabella.

Usare percorsi esterni gestiti da Unity Catalog quando si specificano i percorsi per i checkpoint di Structured Streaming. Per altre informazioni sulla connessione sicura dell'archiviazione con Unity Catalog, vedere Connettersi all'archiviazione di oggetti cloud e ai servizi tramite Il catalogo unity.

Il supporto delle funzionalità di Structured Streaming varia a seconda della versione di Databricks Runtime in esecuzione e se si usa la modalità di accesso al cluster assegnato o condiviso. Per altre informazioni, vedere Limitazioni di streaming per Unity Catalog.

Per una demo end-to-end con Structured Streaming in Unity Catalog, vedere Esercitazione: Eseguire una pipeline di analisi lakehouse end-to-end.

Quali funzionalità di Structured Streaming non sono supportate in Unity Catalog?

Per un elenco delle funzionalità di Structured Streaming non supportate in Unity Catalog, vedere Limitazioni di streaming per Unity Catalog.

Leggere una visualizzazione di Unity Catalog come stream

Importante

Questa funzionalità è disponibile in anteprima pubblica.

In Databricks Runtime 14.1 e versioni successive è possibile usare Structured Streaming per eseguire lo streaming delle letture dalle visualizzazioni registrate con Unity Catalog. Azure Databricks supporta solo le letture in streaming dalle viste definite nelle tabelle Delta.

Per leggere una visualizzazione con Structured Streaming, specificare l'identificatore per la visualizzazione al .table() metodo, come nell'esempio seguente:

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

Gli utenti devono disporre di SELECT privilegi per la visualizzazione di destinazione.

Opzioni supportate per la configurazione delle letture di streaming sulle visualizzazioni

Quando si configurano le letture in streaming sulle visualizzazioni sono supportate le opzioni seguenti:

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

Il lettore di streaming applica queste opzioni ai file e ai metadati che definiscono le tabelle Delta sottostanti.

Importante

Le letture sulle visualizzazioni definite con UNION ALL non supportano le opzioni withEventTimeOrder e startingVersion.

Operazioni supportate nelle visualizzazioni di origine

Non tutte le visualizzazioni supportano le letture di streaming. Le operazioni non supportate nelle visualizzazioni di origine includono aggregazioni e ordinamento.

L'elenco seguente fornisce descrizioni e definizioni di visualizzazione di esempio per le operazioni supportate:

  • Progetto

    • Descrizione: controlla le autorizzazioni a livello di colonna

    • Operatore: SELECT... FROM...

    • Esempio istruzione:

      CREATE VIEW project_view AS
      SELECT id, value
      FROM source_table
      
  • Filtra

    • Descrizione: controlla le autorizzazioni a livello di riga

    • Operatore: WHERE...

    • Esempio istruzione:

      CREATE VIEW filter_view AS
      SELECT * FROM source_table
      WHERE value > 100
      
  • Union all

    • Descrizione: risultati da più tabelle

    • Operatore: UNION ALL

    • Esempio istruzione:

      CREATE VIEW union_view AS
      SELECT id, value FROM source_table1
      UNION ALL
      SELECT * FROM source_table2
      

Nota

Non è possibile modificare la definizione della visualizzazione per aggiungere o modificare le tabelle a cui si fa riferimento e usare lo stesso checkpoint di streaming.

Limiti

Si applicano le limitazioni seguenti:

  • È possibile eseguire lo streaming solo dalle visualizzazioni supportate dalle tabelle Delta. Le visualizzazioni definite in base ad altre origini dati non sono supportate.

  • È necessario registrare le visualizzazioni con Unity Catalog.

  • L'eccezione seguente viene visualizzata se si esegue lo stream da una visualizzazione con un operatore non supportato:

    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.
    
  • L'eccezione seguente viene visualizzata se si forniscono opzioni non supportate:

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