Share via


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.

Oltre al supporto esistente per rendere persistenti le tabelle nel metastore Hive, è possibile usare Il catalogo Unity con le pipeline di tabelle live Delta per:

  • Definire un catalogo in Unity Catalog in cui la pipeline rende persistenti le tabelle.
  • Legge i dati dalle tabelle di Unity Catalog.

L'area di lavoro può contenere pipeline che usano Unity Catalog o il metastore Hive. Tuttavia, una singola pipeline non può scrivere sia nel metastore Hive che in Unity Catalog e nelle pipeline esistenti non può essere aggiornata per l'uso di Unity Catalog. Le pipeline esistenti che non usano Unity Catalog non sono interessate da questa anteprima e continueranno 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.

Le tabelle create nella pipeline possono anche essere sottoposte a query da cluster di Catalogo Unity condivisi usando Databricks Runtime 13.3 LTS e versioni successive o sql warehouse. Le tabelle non possono essere sottoposte a query da cluster di isolamento o assegnati.

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

Requisiti

Per creare tabelle nel catalogo Unity da una pipeline di tabelle live Delta, è necessario quanto segue:

  • È necessario disporre USE CATALOG dei privilegi per il catalogo di destinazione.
  • Se la pipeline crea viste materializzate, è necessario disporre CREATE MATERIALIZED VIEW di privilegi e USE SCHEMA nello schema di destinazione.
  • Se la pipeline crea tabelle di streaming, è necessario disporre CREATE TABLE di privilegi e USE SCHEMA nello schema di destinazione.
  • 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.

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 dispongono dell'autorizzazione per visualizzare i log del driver dal cluster che esegue una pipeline abilitata per Il catalogo Unity. Per consentire ad altri utenti di visualizzare i 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 di Unity Catalog. Vedere Eseguire l'aggiornamento all'ereditarietà dei privilegi.

  • Le librerie e i file JAR di terze parti non sono supportati.

  • 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.

  • La pubblicazione negli schemi che specificano un percorso di archiviazione gestito è supportata solo nel canale di anteprima.

  • 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.

  • Se lo schema di destinazione specifica un percorso di archiviazione, tutte le tabelle vengono archiviate in questa posizione. Se non si specifica un percorso di archiviazione dello schema, le tabelle vengono archiviate nel percorso di archiviazione del catalogo se il catalogo di destinazione ne specifica uno. Se non vengono specificati percorsi di archiviazione dello schema e del catalogo, le tabelle vengono archiviate nel percorso di archiviazione radice del metastore in cui vengono pubblicate le tabelle.

  • La scheda Cronologia in Esplora cataloghi non mostra la cronologia per le tabelle di streaming e le viste materializzate.

  • La LOCATION proprietà 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. Per usare le funzioni definite dall'utente Python, la pipeline deve usare il canale di anteprima.

  • 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 event_logfunzione con valori di tabella 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 event_logtabella 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, assicurarsi di specificare almeno un ruolo di lavoro quando si configurano le impostazioni di calcolo.

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

  • Le tabelle live delta usano un cluster in modalità di accesso condiviso per eseguire una pipeline abilitata per il catalogo unity. Una pipeline abilitata per il catalogo unity non può essere eseguita in un cluster assegnato. Per informazioni sulle limitazioni della modalità di accesso condiviso con Unity Catalog, vedere Limitazioni della modalità di accesso condiviso in Unity Catalog.

  • Non è possibile usare filtri di riga o maschere di colonna con viste materializzate o tabelle di streaming pubblicate 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 la definizione di una vista materializzata includa una COUNT(DISTINCT field_a) clausola . Anche se la definizione di vista materializzata include solo la clausola di aggregazione COUNT DISTINCT , i file sottostanti conterranno un elenco dei valori effettivi di field_a.

Modifiche alla funzionalità esistente

Quando le tabelle live Delta sono configurate per rendere persistenti i dati in Unity Catalog, il ciclo di vita della tabella viene gestito dalla pipeline Di tabelle live Delta. Poiché la pipeline gestisce il ciclo di vita e le autorizzazioni della tabella:

  • Quando una tabella viene rimossa dalla definizione della pipeline Tabelle live Delta, la vista materializzata o la voce di tabella di streaming corrispondente viene rimossa dal catalogo Unity al successivo aggiornamento della pipeline. I dati effettivi vengono conservati per un periodo di tempo in modo che possano essere recuperati se sono stati eliminati per errore. I dati possono essere recuperati aggiungendo la vista materializzata o la tabella di streaming 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 delle tabelle live Delta viene aggiornata per richiedere di confermare l'eliminazione di una pipeline.
  • Le tabelle di backup interne, incluse le tabelle di supporto usate per supportare APPLY CHANGES INTO, non sono direttamente accessibili 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 Archiviazione opzioni, 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 Cataloghi. Per informazioni sugli schemi nel catalogo unity, vedere Schemi.

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 cloud_files() funzione 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 LIVE TABLE
  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 hive_metastore catalogo:

SQL

CREATE OR REFRESH LIVE TABLE
  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
  cloud_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 viste materializzate (tabelle attive)

Per impostazione predefinita, le tabelle create da una pipeline possono essere sottoposte a query solo dal proprietario della 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.

Concedi selezione in una tabella

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

Revoca selezione in una tabella

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
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. Per le viste materializzate o le tabelle di streaming in una pipeline abilitata per il catalogo Unity, l'interfaccia utente di derivazione di Esplora cataloghi mostra le tabelle upstream e downstream. 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 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 di 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;