Tabelle gestite di Unity Catalog in Azure Databricks per Delta Lake e Apache Iceberg

Questa pagina descrive le tabelle gestite di Unity Catalog in Delta Lake e Apache Iceberg, il tipo di tabella predefinito e consigliato in Azure Databricks. Queste tabelle sono completamente regolate e ottimizzate da Unity Catalog, offrendo prestazioni, vantaggi operativi e costi di archiviazione e calcolo inferiori rispetto alle tabelle esterne ed esterne, perché le tabelle gestite imparano dai modelli di lettura e scrittura. Unity Catalog gestisce tutte le responsabilità di lettura, scrittura, archiviazione e ottimizzazione per le tabelle gestite. Vedi Convertire una tabella Delta esterna in una tabella gestita in Unity Catalog.

I file di dati per le tabelle gestite vengono archiviati nello schema o nel catalogo che li contiene. Consultare Specificare una posizione di archiviazione gestita in Unity Catalog.

Databricks consiglia di usare tabelle gestite per sfruttare i vantaggi seguenti:

  • Riduzione dei costi di archiviazione e calcolo.
  • Prestazioni delle query più veloci in tutti i tipi di client.
  • Manutenzione e ottimizzazione automatica delle tabelle.
  • Proteggere l'accesso per i client non Databricks tramite API aperte.
  • Supporto per i formati Delta Lake e Iceberg.
  • Aggiornamenti automatici alle funzionalità della piattaforma più recenti.

Le tabelle gestite supportano l'interoperabilità consentendo l'accesso dai client Delta Lake e Iceberg. Tramite API aperte e distributori di credenziali, Il catalogo Unity consente motori esterni come Trino, DuckDB, Apache Spark, Daft e Motori integrati nel catalogo REST Iceberg come Dremio per accedere alle tabelle gestite. Per i client esterni che non supportano LE API aperte, è possibile usare la modalità compatibilità per leggere le tabelle gestite usando qualsiasi client Delta Lake o Iceberg. Delta Sharing, un protocollo open source, consente la condivisione sicura e regolamentata dei dati con partner e piattaforme esterni.

È possibile usare tabelle gestite in tutti i linguaggi e i prodotti supportati in Azure Databricks. Sono necessari determinati privilegi per creare, aggiornare, eliminare o eseguire query su tabelle gestite. Consulta Gestione dei privilegi in Unity Catalog.

Note

Questa pagina descrive solo le tabelle gestite del catalogo Unity. Per le tabelle gestite nel metastore Hive legacy, vedere Oggetti di database nel metastore Hive legacy.

Perché usare le tabelle gestite di Unity Catalog?

Le tabelle gestite di Unity Catalog ottimizzano i costi di archiviazione e le velocità delle query e consentono l'interoperabilità con strumenti di terze parti per Delta Lake e Apache Iceberg. Per semplificare la gestione e le prestazioni dei dati, queste tabelle gestite usano tecnologie basate sull'intelligenza artificiale, ad esempio la compattazione delle dimensioni dei file e la raccolta intelligente delle statistiche.

Le seguenti funzionalità sono esclusive delle tabelle gestite di Unity Catalog e non sono disponibili per le tabelle esterne e le tabelle federate:

Feature Benefits Abilitata per impostazione predefinita? Configurabile?
Catalogo dei commit Consente transazioni con più istruzioni su più tabelle, una pianificazione più rapida delle query fornendo i metadati direttamente da Unity Catalog, modifiche applicabili a schemi e vincoli e scritture sicure da motori esterni. No Sì.
Impostare la proprietà della delta.feature.catalogManaged tabella. Vedi Abilita i commit del catalogo.
Ottimizzazione predittiva L'ottimizzazione predittiva ottimizza automaticamente il layout e il calcolo dei dati usando l'intelligenza artificiale, senza richiedere operazioni manuali di maintence. Databricks consiglia di abilitare l'ottimizzazione predittiva per tutte le tabelle gestite per ridurre i costi di archiviazione e calcolo.
L'ottimizzazione predittiva viene eseguita automaticamente:
Sì, per tutti i nuovi account creati il 11 novembre 2024.
Per gli account correnti, Azure Databricks abilita gradualmente l'ottimizzazione predittiva per impostazione predefinita. Vedere Verificare se l'ottimizzazione predittiva è abilitata.
Sì. Vedere Abilitare l'ottimizzazione predittiva.
Transazioni con più istruzioni Consente di eseguire più istruzioni SQL in una o più tabelle come singolo commit atomico, con garanzie ACID. Tutte le modifiche riescono positivamente oppure sono annullate insieme. Usare per le stored procedure e gli script SQL nei carichi di lavoro di warehousing cruciali.
Le transazioni che scrivono nelle tabelle Delta Lake gestite sono in anteprima pubblica.
Le transazioni che scrivono su tabelle Apache Iceberg gestite sono in Anteprima privata.
No Sì. Usare BEGIN ATOMIC ... END; per transazioni non interattive o BEGIN TRANSACTION; ... COMMIT; per transazioni interattive. Vedere Modalità di transazione.
Clustering liquido automatico Per le tabelle con ottimizzazione predictive, il clustering liquido automatico consente Azure Databricks di selezionare in modo intelligente le chiavi di clustering. Man mano che i modelli di query cambiano, Azure Databricks aggiorna automaticamente le chiavi di clustering per migliorare le prestazioni e ridurre i costi. No Sì. Vedere Abilitare il clustering liquido.
Memorizzazione nella cache dei metadati La memorizzazione nella cache in memoria dei metadati delle transazioni migliora le prestazioni delle query riducendo al minimo le richieste al log delle transazioni archiviato nel cloud. Sì. No La memorizzazione nella cache dei metadati è sempre abilitata per le tabelle gestite.
Indici di ricerca full-text Gli indici di ricerca full-text accelerano le ricerche di sottostringhe e parole chiave nelle colonne di testo delle tabelle gestite. Quando si applica un indice, Azure Databricks ignora i file che non possono contenere righe corrispondenti, riducendo la quantità di dati analizzati.
Gli indici di ricerca a testo completo velocizzano le ricerche di sottostringhe e parole tramite le funzioni search e isearch.
Gli indici di ricerca full-text sono in versione beta e richiedono Databricks Runtime 18.2 e versioni successive.
No Sì. Crea con CREATE INDEX (secondario) o CREATE SEARCH INDEX (full-text).
Eliminazione automatica dei file dopo un DROP TABLE comando Se si elimina una tabella gestita, Azure Databricks elimina i dati nell'archiviazione nel cloud dopo 8 giorni per ridurre i costi di archiviazione. Per le tabelle esterne, è necessario eliminare manualmente i file dal bucket di archiviazione. Sì. No Per le tabelle gestite, i file vengono sempre eliminati automaticamente dopo 8 giorni.

Accedere ai dati di Databricks usando sistemi esterni

Le tabelle gestite supportano l'interoperabilità consentendo l'accesso dai client Delta Lake e Iceberg. Tramite API aperte e distribuzione di credenziali, Il catalogo unity consente motori esterni come Trino, DuckDB, Apache Spark, Daft e motori integrati nel catalogo REST Iceberg come Dremio e Snowflake per accedere alle tabelle gestite. Vedere integrazioni per un elenco di motori esterni supportati o controllare la documentazione del motore se non è inclusa in questo elenco.

Le API aperte seguenti forniscono ai sistemi esterni l'accesso alle tabelle gestite del catalogo Unity:

  • API REST unity: fornisce l'accesso in lettura, scrittura e creazione per i client Delta alle tabelle Delta gestite.
  • IRC (Iceberg REST Catalog): fornisce l'accesso in lettura, scrittura e creazione per i client Iceberg alle tabelle Iceberg gestite e all'accesso in sola lettura alle tabelle Delta con le letture Iceberg abilitate (UniForm).

Entrambe le API supportano la distribuzione automatica delle credenziali, che fornisce credenziali temporanee con ambito che ereditano i privilegi del principale di Azure Databricks che effettua la richiesta, mantenendo i controlli di governance e sicurezza.

Inoltre, La condivisione Delta è un protocollo open source che consente l'accesso sicuro e regolamentato ai dati a partner e piattaforme esterni. È possibile usare la condivisione Delta per concedere ai partner l'accesso temporaneo e in sola lettura.

Tutte le letture e le scritture nelle tabelle gestite devono usare nomi di tabella e nomi di catalogo e schemi in cui esistono. Ad esempio: catalog_name.schema_name.table_name. L'accesso basato sul percorso alle tabelle gestite del catalogo Unity non è supportato (tranne in modalità compatibilità) perché ignora i controlli di accesso al catalogo Unity e impedisce il corretto funzionamento delle funzionalità della tabella gestita.

Creare una tabella gestita

Per creare una tabella gestita, è necessario disporre di:

  • USE SCHEMA nello schema padre della tabella.
  • USE CATALOG nel catalogo principale della tabella dati.
  • CREATE TABLE nello schema padre della tabella.

Usare la sintassi SQL seguente per creare una tabella gestita vuota usando SQL. Sostituisci i valori segnaposto:

  • <catalog-name>: nome del catalogo che conterrà la tabella.
  • <schema-name>: nome dello schema contenente la tabella.
  • <table-name>: nome della tabella.
  • <column-specification>: nome e tipo di dati di ogni colonna.
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Per mantenere le prestazioni in letture e scritture, Azure Databricks esegue periodicamente operazioni per ottimizzare i metadati della tabella Iceberg gestita. Questa attività viene eseguita usando il calcolo serverless, che ha MODIFY i permessi sulla tabella Iceberg. Questa operazione scrive solo nei metadati della tabella e il sistema di calcolo mantiene solo le autorizzazioni per la tabella per la durata del processo.

Note

Per creare una tabella Iceberg, specificare USING icebergin modo esplicito . In caso contrario, Azure Databricks crea una tabella Delta Lake per impostazione predefinita.

È possibile creare tabelle gestite dai risultati delle query o dalle operazioni di scrittura del dataframe. Gli articoli seguenti illustrano alcuni dei numerosi modelli che è possibile usare per creare una tabella gestita in Azure Databricks:

Eliminare una tabella gestita

Per eliminare una tabella gestita, è necessario disporre di:

  • MANAGE nella tabella oppure devi essere il proprietario della tabella.
  • USE SCHEMA nello schema padre della tabella.
  • USE CATALOG nel catalogo principale della tabella dati.

Per eliminare una tabella gestita, eseguire il comando SQL seguente:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog supporta il UNDROP TABLE comando per ripristinare le tabelle gestite eliminate per 8 giorni. Dopo 8 giorni, Azure Databricks contrassegna i dati sottostanti per l'eliminazione dal tenant cloud e rimuove i file durante la manutenzione automatica delle tabelle. Vedere UNDROP.