Utiliser le découpage de variante pour optimiser les performances
Le déchiquetage de variantes améliore les performances des query sur les colonnes VARIANT en stockant les champs couramment rencontrés comme des colonnes distinctes dans les fichiers Parquet sous-jacents. Le découpage réduit les E/S nécessaires pour lire les champs et améliore la compression en utilisant un format de colonne au lieu d'un blob binaire.
Voir le VARIANT type, la prise en charge du type Variant pour Apache Iceberg et Delta Lake, et l’ interrogation des données Variant.
Exigences
Databricks Runtime 17,3 ou version ultérieure est requis pour lire et écrire des tables VARIANT déchiquetées. Pour des performances de query optimales avec la collecte de statistiques de variantes et le saut de données, Databricks recommande Databricks Runtime 18,1 ou version ultérieure.
Activer le déchiquetage
À partir de Databricks Runtime 17.3, le déchiquetage est automatiquement activé lorsque vous créez une nouvelle table avec une ou plusieurs colonnes VARIANT à l'aide de CREATE TABLE.
CREATE OR REPLACE TABLE et ALTER TABLE n'activent pas automatiquement le déchiquetage. Cela évite de modifier le comportement de déchiquetage des tables et des charges de travail existantes.
Pour les tables existantes, vous pouvez activer manuellement le déchiquetage en définissant la propriété de table enableVariantShredding sur TRUE et le désactiver en définissant la propriété sur FALSE:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');
Vérifiez que le fractionnement est activé en vérifiant que la propriété de table enableVariantShredding est définie sur true.
Se désinscrire du déchiquetage pour une table spécifique
Pour exclure une table spécifique du déchiquetage lors des écritures futures, définissez la propriété de table enableVariantShredding sur FALSE:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');
Supprimer le déchiquetage d'une table existante
Pour supprimer le déchiquetage sur une table existante, supprimez la fonctionnalité avec la commande ALTER TABLE. Cette opération réécrit également les données fragmentées VARIANT en place vers le format non fragmenté VARIANT et définit la propriété de table enableVariantShredding sur faux.
ALTER TABLE my_table DROP FEATURE "variantShredding";
Limitations
- Le déchiquetage des données introduit un certain surcoût sur les écritures.
- L'activation du déchiquetage ne convertit pas automatiquement les données
VARIANTexistantes dans une table. Cela s'applique uniquement aux données écrites après l'activation de la fonctionnalité. Pour réécrire les donnéesVARIANTexistantes, utilisezREORG TABLE my_table APPLY (SHRED VARIANT). - Le déchiquetage s'applique aux colonnes de niveau supérieur
VARIANTou aux champsVARIANTdans les structures, à l'exclusion des donnéesVARIANTstockées dans des tableaux ou des mappages.