Utiliser le découpage de variante pour optimiser les performances
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
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.2 ou une version ultérieure est requis pour lire et écrire des tables VARIANT déchiquetées.
Activer le déchiquetage
Les administrateurs du Workspace peuvent activer le shredding depuis la page Aperçus du workspace. Voir Gérer les aperçus Databricks.
Aucune modification de code n'est requise pour lire ou écrire des données VARIANT avec déchiquetage.
Après avoir activé la fonctionnalité pour votre Workspace, le déchiquetage est automatiquement activé sur les tables pour les scénarios suivants :
CREATE TABLEavec une ou plusieurs colonnesVARIANT.CREATE AND REPLACE TABLEavec une ou plusieurs colonnesVARIANT.ALTER TABLElors de l'ajout d'une ou plusieurs colonnesVARIANT.
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, à condition que le déchiquetage soit activé au niveau du Workspace :
- 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
Si vous activez la version Beta de déchiquetage pour votre Workspace, mais que vous souhaitez exclure une table spécifique, 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-preview";
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.