Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Apache Iceberg v3 migliora le prestazioni delle query e introduce nuove funzionalità per le tabelle gestite che utilizzano Iceberg o Delta Lake con lettura Iceberg in Unity Catalog.
Le caratteristiche principali di Iceberg v3 sono:
- Vettori di eliminazione: abilita eliminazioni efficienti a livello di riga senza riscrivere interi file di dati. Vedere Vettori di eliminazione in Databricks.
- Tipo di dati VARIANT: supporta l'archiviazione e l'elaborazione di dati semistrutturati. Vedere Supporto dei tipi varianti per Apache Iceberg e Delta Lake.
- Lineage delle righe: tiene traccia delle modifiche incrementali ai dati della tabella. Vedi Tracciamento delle righe in Azure Databricks.
-
Tipi di dati GEOMETRY e GEOGRAPHY: Archivia e interroga dati geospaziali per analisi spaziali e operazioni di join. Vedi
GEOMETRYtipo eGEOGRAPHYtipo. - Write defaults: Specifica i valori delle colonne che si applicano alle nuove righe quando una scrittura omette una colonna. Vedi Crea una tabella con i default di scrittura.
Requisiti
Per utilizzare tabelle gestite con caratteristiche Iceberg v3, come i tipi geospaziali, devi soddisfare i seguenti requisiti:
- Un'area di lavoro con il catalogo Unity abilitato.
- Databricks Runtime 18 LTS e versioni successive.
Creare una nuova tabella con Iceberg v3
Crea nuove tabelle con Iceberg v3 abilitato sia per le tabelle gestite Delta Lake con letture Iceberg sia per le tabelle gestite Iceberg.
Delta Lake
Per creare una nuova tabella gestita usando Delta Lake con Iceberg reads e Iceberg v3 abilitati, usa il seguente comando SQL:
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);
Per maggiori informazioni sulla lettura con Iceberg, consulta Leggere le tabelle Delta Lake con client Iceberg.
Iceberg
Per creare una nuova tabella gestita usando Iceberg v3, usare il comando SQL seguente:
CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);
Per altre informazioni sulle tabelle iceberg, vedere Che cos'è Apache Iceberg in Azure Databricks?.
Aggiornare una tabella esistente a Iceberg v3
È possibile aggiornare una tabella esistente a Iceberg v3 tramite:
- Abilitazione di qualsiasi funzionalità v3 in una tabella.
- Impostazione della versione del formato Iceberg su una tabella su 3 (illustrato di seguito).
Importante
È possibile effettuare il downgrade delle tabelle dalla versione 3 alla versione 2 ripristinando la tabella in una versione di tabella prima dell'aggiornamento alla versione 3 usando RESTORE. Vedi Downgrade di una tabella a una versione precedente.
Delta Lake
Per aggiornare una tabella gestita usando Delta Lake con Iceberg reads alla v3, usa il seguente comando:
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
Iceberg
Per aggiornare una tabella gestita usando Iceberg alla versione 3, usare il comando seguente:
ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
'format-version' = 3
);
Abilitare i vettori di eliminazione
I vettori di eliminazione ottimizzano le operazioni di modifica dei dati a livello di riga e sono abilitati per impostazione predefinita in tutte le nuove tabelle Iceberg v3. Vedere Vettori di eliminazione in Databricks.
Annotazioni
L'abilitazione dei vettori di eliminazione in una tabella Iceberg esistente aggiorna la versione del formato Iceberg a 3.
Delta Lake
Per creare una nuova tabella gestita usando Delta Lake con le letture Iceberg, Iceberg v3 e vettori di cancellazione attivati, imposta le seguenti proprietà della tabella:
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
Per creare una nuova tabella gestita utilizzando Iceberg v3 con i vettori di cancellazione abilitati, impostare la proprietà della tabella iceberg.enableDeletionVectors:
CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
'iceberg.enableDeletionVectors' = 'true'
);
Usare il tipo di dati VARIANT
Il tipo di dati VARIANT consente di archiviare ed eseguire query su dati semistrutturati.
Annotazioni
L'uso di VARIANT in una tabella Iceberg esistente aggiorna la versione del formato Iceberg a 3.
Delta Lake
Per creare una nuova tabella gestita usando Delta Lake con Iceberg reads e una colonna VARIANT:
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
Per creare una nuova tabella gestita usando Iceberg v3 con una colonna VARIANT:
CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;
Per aggiungere una colonna VARIANT a una tabella esistente, usare il ALTER TABLE comando :
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;
Usa i tipi di dati GEOMETRY e GEOGRAPHY
Usa i GEOMETRY tipi di dati e GEOGRAPHY per memorizzare e interrogare dati geospaziali. Vedi GEOMETRY tipo e GEOGRAPHY tipo.
Annotazioni
L'uso GEOMETRY o GEOGRAPHY in una tabella Iceberg esistente aggiorna la versione in formato Iceberg a 3.
Delta Lake
Per creare una nuova tabella gestita con Delta Lake con lettura con Iceberg e colonne GEOMETRY o GEOGRAPHY:
CREATE TABLE catalog.schema.table (
geom_col GEOMETRY(3857),
geog_col GEOGRAPHY(4326)
) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
Per creare una nuova tabella gestita usando Iceberg v3 con GEOMETRY colonne o GEOGRAPHY :
CREATE TABLE catalog.schema.table (
geom_col GEOMETRY(3857),
geog_col GEOGRAPHY(4326)
) USING iceberg;
Per aggiungere una GEOMETRY colonna o GEOGRAPHY a una tabella esistente, usa il ALTER TABLE comando:
ALTER TABLE catalog.schema.table ADD COLUMN geom_col GEOMETRY(3857);
ALTER TABLE catalog.schema.table ADD COLUMN geog_col GEOGRAPHY(4326);
Crea una tabella con i valori di scrittura predefiniti
Iceberg v3 definisce due tipi di valori predefiniti:
- I valori predefiniti di scrittura si applicano alle nuove righe quando una scrittura omette la colonna corrispondente. Azure Databricks supporta i valori predefiniti di scrittura.
- I valori predefiniti iniziali si applicano alle righe preesistenti quando viene aggiunta una nuova colonna. Azure Databricks non supporta i default iniziali.
Delta Lake
Per creare una nuova tabella gestita usando Delta Lake con letture Iceberg e una scrittura predefinita:
CREATE TABLE catalog.schema.table (
id INT,
row_status STRING DEFAULT 'active'
) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
Per creare una nuova tabella gestita usando Iceberg v3 con un default di scrittura:
CREATE TABLE catalog.schema.table (
id INT,
row_status STRING DEFAULT 'active'
) USING iceberg;
Per vedere applicato il valore predefinito, inserisci una riga senza row_status:
INSERT INTO catalog.schema.table (id) VALUES (1);
SELECT * FROM catalog.schema.table;
La query precedente restituisce quanto segue, con il valore predefinito applicato a row_status:
id row_status
1 active
Effettuare il downgrade di una tabella a una versione precedente di Apache Iceberg
Se è necessario ripristinare uno stato di una tabella prima dell'aggiornamento a Iceberg v3, è possibile usare il RESTORE comando .
set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;
Limitazioni
Azure Databricks supporta la versione 3 della specifica Iceberg, con le eccezioni seguenti:
- I valori predefiniti iniziali non sono supportati. Quando viene aggiunta una nuova colonna, un valore predefinito iniziale imposta il valore delle righe preesistenti.
- I tipi di dati seguenti non sono supportati:
- Tipo sconosciuto
- Timestamp con precisione al nanosecondo.
- Le trasformazioni a più argomenti non sono supportate.