Usare il catalogo Unity con le pipeline di Delta Live Table

Importante

Il supporto di Delta Live Table per il catalogo Unity è disponibile in anteprima pubblica.

Databricks consiglia di configurare le pipeline di tabelle live Delta con Unity Catalog.

Le pipeline configurate con Il catalogo Unity pubblicano tutte le viste materializzate definite e le tabelle di streaming nel catalogo e nello schema specificati. Le pipeline di Catalogo Unity possono leggere da altre tabelle e volumi del catalogo Unity.

Per gestire le autorizzazioni per le tabelle create da una pipeline di Catalogo Unity, usare CONCEDI e REVOCA.

Requisiti

Autorizzazioni necessarie per creare tabelle nel catalogo Unity da una pipeline di tabelle live Delta:

  • USE CATALOG privilegi nel catalogo di destinazione.
  • CREATE MATERIALIZED VIEW e USE SCHEMA privilegi sullo schema di destinazione se la pipeline crea viste materializzate.
  • CREATE TABLE e USE SCHEMA privilegi sullo schema di destinazione se la pipeline crea tabelle di streaming.
  • Se nelle impostazioni della pipeline non è specificato uno schema di destinazione, è necessario disporre CREATE MATERIALIZED VIEW o CREATE TABLE privilegi per almeno uno schema nel catalogo di destinazione.

Calcolo necessario per eseguire una pipeline abilitata per il catalogo Unity:

Il calcolo necessario per eseguire query sulle tabelle create da una pipeline di tabelle live Delta usando il catalogo Unity (incluse le tabelle di streaming e le viste materializzate) include uno dei seguenti elementi:

  • Warehouse SQL

  • Cluster in modalità di accesso condiviso in Databricks Runtime 13.3 LTS o versione successiva.

  • Cluster in modalità di accesso utente singolo (o "assegnato"), se il controllo di accesso con granularità fine è abilitato nel cluster utente singolo, ovvero il cluster è in esecuzione in Databricks Runtime 15.4 o versione successiva e l'ambiente di calcolo serverless è abilitato per l'area di lavoro. Per altre informazioni, vedere Controllo di accesso con granularità fine per il calcolo di un singolo utente.

  • Cluster in modalità di accesso utente singolo (o "assegnato") su 13.3 LTS fino a 15.3, solo se il proprietario della tabella esegue la query.

Si applicano limitazioni di calcolo aggiuntive. Vedere la sezione seguente.

Limitazioni

Di seguito sono riportate alcune limitazioni quando si usa il catalogo Unity con le tabelle live Delta:

  • Per impostazione predefinita, solo il proprietario della pipeline e gli amministratori dell'area di lavoro possono visualizzare i log del driver dal cluster che esegue una pipeline abilitata per Unity Catalog. Per consentire ad altri utenti di accedere ai log dei driver, vedere Consentire agli utenti non amministratori di visualizzare i log dei driver da una pipeline abilitata per Unity Catalog.

  • Le pipeline esistenti che usano il metastore Hive non possono essere aggiornate per l'uso di Unity Catalog. Per eseguire la migrazione di una pipeline esistente che scrive nel metastore Hive, è necessario creare una nuova pipeline e inserire nuovamente i dati dalle origini dati.

  • Non è possibile creare una pipeline abilitata per il catalogo Unity in un'area di lavoro collegata a un metastore creato durante l'anteprima pubblica del catalogo Unity. Si veda Eseguire l'aggiornamento all'ereditarietà dei privilegi.

  • I JAR non sono supportati. Sono supportate solo le librerie Python di terze parti. Vedere Gestire le dipendenze Python per le pipeline di tabelle live Delta.

  • Le query DML (Data Manipulation Language) che modificano lo schema di una tabella di streaming non sono supportate.

  • Una vista materializzata creata in una pipeline di tabelle live Delta non può essere usata come origine di streaming all'esterno di tale pipeline, ad esempio in un'altra pipeline o in un notebook downstream.

  • Se una pipeline pubblica in uno schema con un percorso di archiviazione gestito, lo schema può essere modificato in un aggiornamento successivo, ma solo se lo schema aggiornato usa la stessa posizione di archiviazione dello schema specificato in precedenza.

  • Le tabelle vengono archiviate nel percorso di archiviazione per lo schema di destinazione. Se non si specifica un percorso di archiviazione dello schema, le tabelle vengono archiviate nel percorso di archiviazione del catalogo. Se non vengono specificati percorsi di archiviazione dello schema e del catalogo, le tabelle vengono archiviate nel percorso di archiviazione radice del metastore.

  • La scheda Cronologia esplora cataloghi non mostra la cronologia per le tabelle di streaming o le viste materializzate.

  • La proprietà LOCATION non è supportata durante la definizione di una tabella.

  • Le pipeline abilitate per il catalogo unity non possono pubblicare nel metastore Hive.

  • Il supporto della funzione definita dall'utente Python è disponibile in anteprima pubblica.

  • Non è possibile usare la condivisione Delta con una vista materializzata Delta Live Tables o una tabella di streaming pubblicata in Unity Catalog.

  • Non è possibile usare la funzione con valori di tabella event_log in una pipeline o una query per accedere ai log eventi di più pipeline.

  • Non è possibile condividere una vista creata sulla funzione con valori di tabella event_log con altri utenti.

  • I cluster a nodo singolo non sono supportati con le pipeline abilitate per il catalogo unity. Poiché le tabelle live Delta potrebbero creare un cluster a nodo singolo per eseguire pipeline di dimensioni inferiori, la pipeline potrebbe non riuscire con un messaggio di errore che fa riferimento a single-node mode. In questo caso, specificare almeno un ruolo di lavoro quando si configura il calcolo. Vedere Configurare il calcolo per una pipeline di tabelle live Delta.

Nota

I file sottostanti che supportano le viste materializzate potrebbero includere dati provenienti da tabelle a monte ( comprendenti possibili informazioni di identificazione personale) che non compaiono nella definizione della vista materializzata. Questi dati vengono aggiunti automaticamente all'archivio sottostante per supportare l'aggiornamento incrementale delle viste materializzate.

Poiché i file sottostanti di una vista materializzata potrebbero rischiare di esporre dati da tabelle upstream non incluse nello schema della vista materializzata, Databricks consiglia di non condividere l'archiviazione sottostante con consumer downstream non attendibili.

Si supponga, ad esempio, che una definizione di vista materializzata includa una COUNT(DISTINCT field_a) clausola . Anche se la definizione di vista materializzata include solo la clausola COUNT DISTINCT di aggregazione , i file sottostanti conterranno un elenco dei valori effettivi di field_a.

È possibile usare insieme le pipeline del metastore Hive e del catalogo Unity?

L'area di lavoro può contenere pipeline che usano Unity Catalog e il metastore Hive legacy. Tuttavia, una singola pipeline non può scrivere nel metastore Hive e nel catalogo Unity. Le pipeline esistenti che scrivono nel metastore Hive non possono essere aggiornate per l'uso del catalogo Unity.

Le pipeline esistenti che non usano Unity Catalog non sono interessate dalla creazione di nuove pipeline configurate con Unity Catalog. Queste pipeline continuano a rendere persistenti i dati nel metastore Hive usando il percorso di archiviazione configurato.

Se non specificato diversamente in questo documento, tutte le origini dati esistenti e la funzionalità Tabelle live Delta sono supportate con le pipeline che usano Unity Catalog. Sia le interfacce Python che SQL sono supportate con le pipeline che usano il catalogo Unity.

Modifiche alla funzionalità esistente

Quando le Delta Live Tables sono configurate per rendere persistenti i dati nel catalogo Unity, il ciclo di vita della tabella viene completamente gestito dalla pipeline Delta Live Tables. Poiché la pipeline gestisce il ciclo di vita e le autorizzazioni della tabella:

  • Quando una tabella viene rimossa dalla definizione della pipeline Delta Live Tables, la vista materializzata o la voce di tabella di streaming corrispondente viene rimossa dal catalogo Unity nel successivo aggiornamento della pipeline. I dati effettivi vengono conservati per un periodo in modo che possano essere recuperati se eliminati per errore. I dati possono essere recuperati aggiungendo la vista materializzata o >st nella definizione della pipeline.
  • L'eliminazione della pipeline di tabelle live delta comporta l'eliminazione di tutte le tabelle definite nella pipeline. A causa di questa modifica, l'interfaccia utente di Delta Live Tables viene aggiornata per richiedere di confermare l'eliminazione di una pipeline.
  • Le tabelle di supporto interne, incluse quelle usate per supportare APPLY CHANGES INTO, non sono accessibili direttamente dagli utenti.

Scrivere tabelle nel catalogo Unity da una pipeline di tabelle live Delta

Nota

Se non si seleziona un catalogo e uno schema di destinazione per una pipeline, le tabelle non vengono pubblicate in Unity Catalog e sono accessibili solo dalle query nella stessa pipeline.

Per scrivere le tabelle nel catalogo Unity, quando si crea una pipeline, selezionare Catalogo Unity in Opzioni di archiviazione, selezionare un catalogo nel menu a discesa Catalogo e selezionare uno schema esistente o immettere il nome per un nuovo schema nel menu a discesa Schema di destinazione. Per informazioni sui cataloghi di Unity, vedere Che cosa sono i cataloghi in Azure Databricks?. Per informazioni sugli schemi in Unity Catalog, vedere Che cosa sono gli schemi in Azure Databricks?.

Inserire dati in una pipeline di Catalogo Unity

La pipeline configurata per l'uso di Unity Catalog può leggere i dati da:

  • Tabelle gestite ed esterne di Unity Catalog, viste, viste materializzate e tabelle di streaming.
  • Tabelle e viste metastore Hive.
  • Caricatore automatico usando la funzione read_files() per leggere da posizioni esterne del catalogo Unity.
  • Apache Kafka e AmazonPartizionis.

Di seguito sono riportati esempi di lettura da tabelle del metastore di Unity e Hive.

Inserimento batch da una tabella del catalogo Unity

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.table("my_catalog.my_schema.table")

Trasmettere le modifiche da una tabella del catalogo Unity

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dlt.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Inserire dati dal metastore Hive

Una pipeline che usa Unity Catalog può leggere i dati dalle tabelle del metastore Hive usando il catalogo hive_metastore:

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Inserire dati dal caricatore automatico

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  read_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Condividere le viste materializzate

Per impostazione predefinita, solo il proprietario della pipeline dispone dell'autorizzazione per eseguire query sui set di dati creati dalla pipeline. È possibile concedere ad altri utenti la possibilità di eseguire query su una tabella usando istruzioni CONCEDI ed è possibile revocare l'accesso alle query usando istruzioni REVOCA . Per ulteriori informazioni sui privilegi nel catalogo Unity, si veda Gestire privilegi nel catalogo Unity.

Concedi selezione in una tabella

GRANT SELECT ON TABLE
  my_catalog.my_schema.table_name
TO
  `user@databricks.com`

Revoca selezione in una tabella

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
FROM
  `user@databricks.com`

Concedere la creazione di una tabella o creare privilegi di visualizzazione materializzati

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Visualizzare la derivazione per una pipeline

La derivazione per le tabelle in una pipeline di tabelle live Delta è visibile in Esplora cataloghi. L'interfaccia utente di derivazione di Esplora cataloghi mostra le tabelle upstream e downstream per le viste materializzate o le tabelle di streaming in una pipeline abilitata per il catalogo Unity. Per altre informazioni sulla derivazione del catalogo Unity, vedere Acquisire e visualizzare la derivazione dei dati con Unity Catalog.

Per una vista materializzata o una tabella di streaming in una pipeline Delta Live Tables abilitata per Unity Catalog, l'interfaccia utente di derivazione di Esplora cataloghi collegherà anche alla pipeline che ha prodotto la vista materializzata o la tabella di streaming se la pipeline è accessibile dall'area di lavoro corrente.

Aggiungere, modificare o eliminare dati in una tabella di streaming

È possibile usare istruzioni DML (Data Manipulation Language ), incluse le istruzioni insert, update, delete e merge, per modificare le tabelle di streaming pubblicate in Unity Catalog. Il supporto per le query DML sulle tabelle di streaming consente casi d'uso come l'aggiornamento delle tabelle per la conformità al Regolamento generale sulla protezione dei dati (GDPR).

Nota

  • Le istruzioni DML che modificano lo schema di tabella di una tabella di streaming non sono supportate. Assicurarsi che le istruzioni DML non tentino di evolvere lo schema della tabella.
  • Le istruzioni DML che aggiornano una tabella di streaming possono essere eseguite solo in un cluster unity catalog condiviso o in un sql warehouse usando Databricks Runtime 13.3 LTS e versioni successive.
  • Poiché lo streaming richiede origini dati di sola accodamento, se l'elaborazione richiede lo streaming da una tabella di streaming di origine con modifiche (ad esempio, dalle istruzioni DML), impostare il flag skipChangeCommits durante la lettura della tabella di streaming di origine. Quando skipChangeCommits è impostata, le transazioni che eliminano o modificano i record nella tabella di origine vengono ignorate. Se l'elaborazione non richiede una tabella di streaming, è possibile usare una vista materializzata (che non ha la restrizione di sola accodamento) come tabella di destinazione.

Di seguito sono riportati esempi di istruzioni DML per modificare i record in una tabella di streaming.

Eliminare record con un ID specifico:

DELETE FROM my_streaming_table WHERE id = 123;

Aggiornare i record con un ID specifico:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;

Pubblicare tabelle con filtri di riga e maschere di colonna

Importante

Questa funzionalità è disponibile in anteprima pubblica.

I filtri di riga consentono di specificare una funzione che viene applicata come filtro ogni volta che un'analisi di tabella recupera righe. Questi filtri assicurano che le query successive restituiscano solo righe per le quali il predicato di filtro restituisce TRUE.

Le maschere di colonna consentono di mascherare i valori di una colonna ogni volta che un'analisi di tabella recupera le righe. Le query future per tale colonna restituiscono il risultato della funzione valutata anziché il valore originale della colonna. Per altre informazioni sull'uso di filtri di riga e maschere di colonna, vedere Filtrare i dati delle tabelle sensibili usando filtri di riga e maschere di colonna.

Gestione dei filtri di riga e delle maschere di colonna

I filtri di riga e le maschere di colonna nelle viste materializzate e nelle tabelle di streaming devono essere aggiunti, aggiornati o eliminati tramite l'istruzione CREATE OR REFRESH.

Per una sintassi dettagliata sulla definizione di tabelle con filtri di riga e maschere di colonna, vedere Informazioni di riferimento sul linguaggio SQL di Tabelle live Delta e Informazioni di riferimento sul linguaggio Python per le tabelle live Delta.

Comportamento

Di seguito sono riportati dettagli importanti quando si usano filtri di riga o maschere di colonna nelle pipeline di tabelle live Delta:

  • Aggiorna come proprietario: quando un aggiornamento della pipeline aggiorna una vista materializzata o una tabella di streaming, le funzioni di filtro di riga e maschera di colonna vengono eseguite con i diritti del proprietario della pipeline. Ciò significa che l'aggiornamento della tabella usa il contesto di sicurezza dell'utente che ha creato la pipeline. Le funzioni che controllano il contesto utente (ad esempio CURRENT_USER e IS_MEMBER) vengono valutate usando il contesto utente del proprietario della pipeline.
  • Query: quando si esegue una query su una vista materializzata o una tabella di streaming, le funzioni che controllano il contesto utente (ad esempio CURRENT_USER e IS_MEMBER) vengono valutate usando il contesto utente del chiamante. Questo approccio applica controlli di accesso e sicurezza dei dati specifici dell'utente in base al contesto dell'utente corrente.
  • Quando si creano viste materializzate sulle tabelle di origine che contengono filtri di riga e maschere di colonna, l'aggiornamento della vista materializzata comporta sempre un aggiornamento completo. Un aggiornamento completo elabora tutti i dati disponibili nell'origine con le definizioni più recenti. Questo processo verifica che i criteri di sicurezza nelle tabelle di origine vengano valutati e applicati con i dati e le definizioni più aggiornati.

Osservabilità

Usare DESCRIBE EXTENDED, INFORMATION_SCHEMAo Esplora cataloghi per esaminare i filtri di riga e le maschere di colonna esistenti che si applicano a una determinata vista materializzata o a una tabella di streaming. Questa funzionalità consente agli utenti di controllare ed esaminare le misure di accesso e protezione dei dati nelle viste materializzate e nelle tabelle di streaming.