Utilisez les fonctionnalités v3 d'Apache Iceberg
Apache Iceberg v3 améliore les performances des requêtes et introduit de nouvelles capacités pour les tables gérées à l'aide d'Iceberg ou de Delta Lake avec UniForm 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 les fonctionnalités Iceberg v3, vous devez satisfaire aux exigences suivantes :
- Un Workspace avec Unity Catalog activé.
- Databricks Runtime 18.0 ou version supérieure pour lire et écrire dans des tables gérées avec Iceberg v3.
- Databricks Runtime 18.2 ou version ultérieure pour utiliser les types géospatiaux avec Iceberg v3.
Créer une nouvelle table avec Iceberg v3
Créez de nouvelles tables avec Iceberg v3 activé pour les tables Delta Lake gérées avec UniForm et les tables Iceberg gérées.
- Delta Lake with UniForm
- Iceberg
Pour créer une nouvelle table gérée à l'aide de Delta Lake avec UniForm et Iceberg v3 activés, 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 UniForm, consultez Lire les tables Delta Lake avec les clients Iceberg à l'aide d'UniForm.
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 UniForm
- Iceberg
Pour mettre à niveau une table gérée utilisant Delta Lake avec UniForm 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 UniForm
- Iceberg
Pour créer une nouvelle table gérée à l'aide de Delta Lake avec UniForm, 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 UniForm
- Iceberg
Pour créer une nouvelle table gérée à l'aide de Delta Lake avec UniForm 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.