Utilizza Unity Catalog con le pipeline DLT
Importante
Il supporto DLT per Il catalogo Unity si trova in anteprima pubblica.
Databricks consiglia di configurare le pipeline DLT 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 Unity Catalog possono leggere da altre tabelle e volumi di Unity Catalog.
Per gestire le autorizzazioni per le tabelle create da una pipeline di Catalogo Unity, usare GRANT e REVOKE.
Nota
Questo articolo illustra le funzionalità per la modalità di pubblicazione predefinita corrente per le pipeline. Le pipelines create prima del 5 febbraio 2025 possono utilizzare la modalità di pubblicazione legacy e lo schema virtuale LIVE
. Vedi lo schema LIVE (legacy) .
Requisiti di
Per creare tabelle di streaming e viste materializzate in uno schema di destinazione in Unity Catalog, è necessario disporre delle autorizzazioni seguenti per lo schema e il catalogo padre:
-
USE CATALOG
privilegi nel catalogo di destinazione. -
CREATE MATERIALIZED VIEW
eUSE SCHEMA
nei privilegi nello schema di destinazione se la pipeline crea viste materializzate . -
CREATE TABLE
eUSE SCHEMA
privilegi sullo schema di destinazione se la pipeline crea tabelle di streaming .
Se la pipeline crea nuovi schemi, è necessario disporre di privilegi USE CATALOG
e CREATE SCHEMA
nel catalogo di destinazione.
Calcolo necessario per eseguire una pipeline compatibile con Unity Catalog:
- Modalità di accesso standard (in precedenza modalità di accesso condiviso). Una pipeline abilitata per il Catalogo Unity non può essere eseguita su un calcolo dedicato (precedentemente noto come calcolo per singolo utente). Consultare le limitazioni della modalità di accesso Standard in Unity Catalog .
Il calcolo necessario per eseguire query sulle tabelle create da una pipeline DLT usando il catalogo Unity (incluse le tabelle di streaming e le viste materializzate) include una delle opzioni seguenti:
- Sql Warehouse
- Calcolo in modalità di accesso standard in Databricks Runtime 13.3 LTS o versione successiva.
- Calcolo in modalità di accesso dedicato, se il controllo di accesso con granularità fine è abilitato nell'ambiente di calcolo dedicato, ovvero è in esecuzione in Databricks Runtime 15.4 o versione successiva e il calcolo serverless è abilitato per l'area di lavoro. Per ulteriori informazioni, vedere controllo di accesso fine-grained su risorse computazionali dedicate (precedentemente note come risorse computazionali per singolo utente).
- Calcolo in modalità di accesso dedicato dal 13.3 LTS al 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 DLT:
- Per impostazione predefinita, solo il proprietario della pipeline e gli amministratori dell'area di lavoro possono visualizzare i log dei driver dal calcolo che esegue una pipeline abilitata per il catalogo Unity. 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. Consultare per creare una pipeline del catalogo Unity clonando una pipeline del metastore di Hive.
- 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. Consultare Aggiornamento all'ereditarietà dei privilegi.
- I file JAR non sono supportati. Sono supportate solo le librerie Python di terze parti. Vedere Gestire le dipendenze Python per le pipeline DLT.
- 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 DLT non può essere usata come origine di streaming all'esterno di tale pipeline, ad esempio in un'altra pipeline o in un notebook downstream.
- I dati per le viste materializzate e le tabelle di streaming vengono archiviati nella posizione di archiviazione dello schema contenitore. 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 Esplora cataloghi Cronologia non mostra la cronologia per 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 delle funzioni definite dall'utente in Python è disponibile in in anteprima pubblica.
- Non è possibile utilizzare Delta Sharing con una vista materializzata DLT o una tabella di streaming pubblicata in Unity Catalog.
Nota
I file sottostanti che supportano viste materializzate possono includere dati da tabelle upstream (incluse le possibili informazioni personali) che non vengono visualizzati 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 clausola COUNT(DISTINCT field_a)
. Anche se la definizione della vista materializzata include solo la clausola di aggregazione COUNT DISTINCT
, 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. Per eseguire la migrazione di una pipeline esistente che scrive nel metastore Hive, è necessario creare una nuova pipeline e riacquisire i dati dalle sorgenti di dati. Consultare Creare una pipeline del Unity Catalog clonando una pipeline del metastore di Hive.
Le pipeline esistenti che non usano Unity Catalog non sono interessate dalla creazione di nuove pipeline configurate con Unity Catalog. Queste pipeline continuano a persistere i dati nel metastore Hive utilizzando il percorso di archiviazione configurato.
Se non specificato diversamente in questo documento, tutte le origini dati esistenti e le funzionalità DLT sono supportate con le pipeline che usano Unity Catalog. Sia le interfacce di Python che SQL sono supportate con le pipeline che usano Unity Catalog.
Modifiche alla funzionalità esistente
Quando DLT è configurato per rendere persistenti i dati in Unity Catalog, la pipeline DLT gestisce il ciclo di vita e le autorizzazioni della tabella. Di conseguenza:
- Quando una tabella viene rimossa dalla definizione della pipeline, l'aggiornamento successivo contrassegnerà come inattiva la vista materializzata corrispondente o la voce della tabella di streaming. Le tabelle inattive possono comunque essere sottoposte a query, ma non verranno aggiornate. Per pulire le viste materializzate o le tabelle di streaming, è possibile eseguire esplicitamente l'operazione
DROP
sulla tabella.- È possibile ripristinare qualsiasi tabella eliminata entro 7 giorni usando il comando
UNDROP
. - Per mantenere il comportamento legacy in cui la vista materializzata o l'elemento della tabella di streaming viene rimosso da Unity Catalog al successivo aggiornamento della pipeline, configurare la pipeline con
"pipelines.dropInactiveTables": "true"
. I dati effettivi vengono conservati per un periodo in modo che possano essere recuperati se eliminati per errore. I dati possono essere recuperati entro 7 giorni aggiungendo nuovamente la vista materializzata o la tabella di streaming nella definizione della pipeline.
- È possibile ripristinare qualsiasi tabella eliminata entro 7 giorni usando il comando
- L'eliminazione della pipeline DLT comporta l'eliminazione di tutte le tabelle definite nella pipeline. A causa di questa modifica, l'interfaccia utente DLT viene aggiornata per richiedere di confermare l'eliminazione di una pipeline.
- Le tabelle di backup interne, incluse quelle usate per supportare
APPLY CHANGES INTO
, non sono direttamente accessibili dagli utenti.
Scrivere tabelle nel catalogo Unity da una pipeline DLT
Per scrivere le tabelle in Unity Catalog, è necessario configurare la pipeline per usarla tramite l'area di lavoro. Quando si crea una pipeline, selezionare Unity Catalog in Opzioni di archiviazione, selezionare un catalogo nel menu a discesa Catalogo e selezionare uno schema esistente o immettere il nome di un nuovo schema nel menu a discesa Schema di destinazione. Per informazioni sui cataloghi di Unity Catalog, 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 del 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 del metastore di Hive.
- Caricatore automatico usando la funzione
read_files()
per leggere da posizioni esterne del catalogo Unity. - Apache Kafka e Amazon Kinesis.
Di seguito sono riportati esempi di lettura da tabelle di Unity Catalog e del metastore di 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;
Pitone
@dlt.table
def table_name():
return spark.read.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);
Pitone
@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;
Pitone
@dlt.table
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Inserire dati dal caricatore automatico
SQL
CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
"/path/to/uc/external/location",
format => "json"
)
Pitone
@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 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 GRANT ed è possibile revocare l'accesso alle query usando istruzioni REVOKE. Per altre informazioni sui privilegi nel Catalogo Unity, vedere Gestire i privilegi nel Catalogo Unity.
Concedere SELECT su una tabella
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Revoca il privilegio SELECT su 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 tracciabilità per una pipeline
La derivazione per le tabelle in una pipeline DLT è visibile in Catalogo Explorer. 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 ulteriori informazioni sulla tracciabilità del catalogo Unity Catalog, vedere Acquisire e visualizzare la tracciabilità dei dati utilizzando Unity Catalog.
Per una vista materializzata o una tabella di streaming in una pipeline DLT abilitata per Unity Catalog, l'interfaccia utente di lineage di Esplora Catalogo collegherà anche alla pipeline che ha generato 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 su 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 viene impostata
skipChangeCommits
, le transazioni che eliminano o modificano i record nella tabella di origine vengono ignorate. Se il tuo processo di elaborazione non richiede una tabella di streaming, è possibile usare una vista materializzata (che non ha la limitazione di solo aggiunta) 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à si trova in anteprima pubblica.
Filtri di riga consente 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 risulti vero.
maschere di colonna consentono di mascherare i valori di una colonna ogni volta che una scansione della 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 riferimento al linguaggio SQL DLT e riferimento al linguaggio Python DLT.
Comportamento
Di seguito sono riportati dettagli importanti quando si usano filtri di riga o maschere di colonna nelle pipeline DLT:
-
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
eIS_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
eIS_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 è 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ù up-to-date.
Osservabilità
Usare DESCRIBE EXTENDED
, INFORMATION_SCHEMA
o Esplora cataloghi per esaminare i filtri di riga e le maschere di colonna esistenti applicabili a una vista materializzata specifica 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.