Utilisez les fonctionnalités v3 d'Apache Iceberg
Apache Iceberg v3 améliore les performances des query et introduit de nouvelles fonctionnalités pour les tables gérées utilisant Iceberg ou Delta Lake avec des lectures Iceberg dans Unity Catalog.
Les fonctionnalités clés d'Iceberg v3 sont :
- Vecteurs de suppression : Activer les suppressions efficaces au niveau des lignes sans réécrire des fichiers de données entiers. Consultez les vecteurs de suppression dans Databricks.
- Type de données VARIANT : prend en charge le stockage et le traitement des données semi-structurées. Consultez la prise en charge des types variant pour Apache Iceberg et Delta Lake.
- Traçabilité des lignes : Suit les modifications incrémentielles apportées aux données de table. Consultez le suivi des lignes dans Databricks.
Exigences
Pour utiliser des tables gérées avec les fonctionnalités Iceberg v3, telles que les types géospatiaux, vous devez remplir les conditions suivantes :
- Un Workspace avec Unity Catalog activé.
- Databricks Runtime 18 LTS et versions ultérieures.
Créer une nouvelle table avec Iceberg v3
Créez de nouvelles tables avec Iceberg v3 activé, aussi bien pour les tables Delta Lake gérées avec lectures Iceberg que pour les tables Iceberg gérées.
- Delta Lake with Iceberg reads
- Iceberg
Pour créer une nouvelle table gérée utilisant Delta Lake avec les lectures Iceberg et Iceberg v3 activées, utilisez la commande SQL suivante :
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);
Pour plus d’informations sur les lectures Iceberg, consultez Lire des tables Delta Lake avec des clients Iceberg.
Pour créer une nouvelle table gérée à l'aide d'Iceberg v3, utilisez la commande SQL suivante :
CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);
Pour plus d'informations sur les tables Iceberg, voir Qu'est-ce que Apache Iceberg dans Databricks ?.
Mettre à niveau une table existante vers Iceberg v3
Vous pouvez mettre à niveau une table existante vers Iceberg v3 en :
- Activation de toute fonctionnalité v3 sur une table.
- Définition de la version du format Iceberg sur une table à 3 (indiqué ci-dessous).
Les tables peuvent être rétrogradées de la version 3 à la version 2 en restaurant la table à une version antérieure à la mise à niveau vers la version 3 à l'aide de RESTORE. Consultez Rétrograder une table à une version précédente.
- Delta Lake with Iceberg reads
- Iceberg
Pour mettre à niveau une table gérée utilisant Delta Lake avec des lectures Iceberg vers la v3, utilisez la commande suivante :
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
Pour mettre à niveau une table gérée utilisant Iceberg vers v3, utilisez la commande suivante :
ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
'format-version' = 3
);
Activer les vecteurs de suppression
Les vecteurs de suppression optimisent les opérations de modification de données au niveau des lignes et sont activés par default sur toutes les nouvelles tables Iceberg v3. Consultez Vecteurs de suppression dans Databricks.
L’activation des vecteurs de suppression sur une table Iceberg existante met à niveau la version du format Iceberg vers la version 3.
- Delta Lake with Iceberg reads
- Iceberg
Pour créer une nouvelle table gérée utilisant Delta Lake avec les lectures Iceberg, Iceberg v3 et les vecteurs de suppression activés, définissez les propriétés de table suivantes :
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Pour créer une nouvelle table gérée à l'aide d'Iceberg v3 avec les vecteurs de suppression activés, définissez la propriété de table iceberg.enableDeletionVectors :
CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
'iceberg.enableDeletionVectors' = 'true'
);
Utilisez le type de données VARIANT
Le type de données VARIANT vous permet de stocker et de query des données semi-structurées.
L'utilisation de VARIANT dans une table Iceberg existante met à niveau la version du format Iceberg vers la version 3.
- Delta Lake with Iceberg reads
- Iceberg
Pour créer une nouvelle table gérée utilisant Delta Lake avec des lectures Iceberg et une colonne VARIANT :
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Pour créer une nouvelle table gérée en utilisant Iceberg v3 avec une colonne de type VARIANT :
CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;
Pour ajouter une colonne VARIANT à une table existante, utilisez la commande ALTER TABLE :
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;
Rétrograder une table vers une version précédente d'Apache Iceberg
Si vous devez rétablir une table à un état antérieur à sa mise à niveau vers Iceberg v3, vous pouvez utiliser la commande RESTORE.
set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;
Limitations
Databricks prend en charge la version 3 de la spécification Iceberg, à l'exception des éléments suivants :
-
Les paramètres par défaut, y compris les paramètres par défaut d'écriture et les paramètres par défaut initiaux, ne sont pas pris en charge.
-
Les types de données suivants ne sont pas pris en charge :
- Type inconnu
- Timestamp d'une précision de nanoseconde.
-
Les transformations multi-arguments ne sont pas prises en charge.