Informations de référence sur les propriétés de table

Les tables Delta Lake et Apache Iceberg utilisent des propriétés de table pour configurer le comportement et les fonctionnalités, notamment la disposition des données, la taille de fichier, l’ignorer, le niveau d’isolation et le flux de données de modification.

Remarque

Toutes les opérations, définissant ou mettant à jour les propriétés de la table, entrent en conflit avec d’autres opérations d’écriture simultanées, ce qui entraîne leur échec. Databricks vous recommande de modifier une propriété de table uniquement à un moment où il n’y a pas d’opérations d’écriture simultanées sur la table.

Modifier les propriétés de la table

Pour modifier les propriétés de table des tables existantes, utilisez SET TBLPROPERTIES.

Préfixes de propriété Delta et Iceberg

Les tables Delta Lake et Apache Iceberg partagent les mêmes noms de propriétés de table, mais nécessitent des préfixes différents :

  • Tables Delta Lake : utiliser le delta. préfixe
  • Tables Iceberg : utiliser le iceberg. préfixe

Par exemple, pour activer les vecteurs de suppression sur une table :

Delta Lake

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Table Iceberg

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Propriétés et SparkSession propriétés de table

Chaque table a ses propres propriétés de table qui contrôlent son comportement. Certaines SparkSession configurations remplacent toujours les propriétés de table. Par exemple, autoCompact.enabled et optimizeWrite.enabled activer le compactage automatique et les écritures optimisées au SparkSession niveau. Databricks recommande d’utiliser des configurations de portée de table pour la plupart des charges de travail.

Vous pouvez définir des valeurs par défaut pour les nouvelles tables à l’aide SparkSession de configurations. Ces valeurs par défaut s’appliquent uniquement aux nouvelles tables et n’affectent pas les propriétés de table existantes. SparkSession les configurations utilisent un préfixe différent des propriétés de table, comme indiqué dans le tableau suivant :

Propriété de tablea Configuration SparkSession
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

Par exemple, pour définir la appendOnly = true propriété pour toutes les nouvelles tables créées dans une session, définissez les éléments suivants :

Delta Lake

SET spark.databricks.delta.properties.defaults.appendOnly = true

Table Iceberg

SET spark.databricks.iceberg.properties.defaults.appendOnly = true

Propriétés de la table

La plupart des propriétés de tableau suivantes sont disponibles pour les tables Delta Lake et Apache Iceberg, sauf indication. Utilisez le préfixe pour les delta. tables Delta Lake et iceberg. le préfixe des tables Iceberg.

Propriété Description
autoOptimize.optimizeWrite true pour optimiser automatiquement la disposition des fichiers pour cette table pendant les écritures.
Consultez les opérations d'écriture optimisées.
Type de donnéesBoolean
Valeur par défaut : (« none »)
dataSkippingNumIndexedCols Nombre de colonnes pour lesquelles collecter des statistiques pour l’optimisation de l'utilisation des données. Valeur de -1 pour collecter des statistiques pour toutes les colonnes.
Consultez le saut de données.
Type de donnéesInt
Valeur par défaut : 32
dataSkippingStatsColumns Liste séparée par des virgules des noms de colonnes sur lesquelles collecter des statistiques pour améliorer la fonctionnalité de saut de données. Cette propriété est prioritaire sur dataSkippingNumIndexedCols.
Consultez le saut de données.
Type de donnéesString
Valeur par défaut : (« none »)
deletedFileRetentionDuration Durée la plus courte pour conserver logiquement les fichiers de données supprimés avant de les supprimer physiquement. Cela prévient les défaillances dans les lecteurs périmés après les compactages ou les remplacements de partition.
Databricks recommande la valeur par défaut de 7 jours ou plus. Si votre période de rétention est trop courte, les tâches de longue durée peuvent voir leurs fichiers en attente de validation supprimés avant l'achèvement de la tâche.
Voir Configurer la conservation des données pour des requêtes de voyage dans le temps.
Type de donnéesCalendarInterval
Valeur par défaut : interval 1 week
enableDeletionVectors true pour activer des vecteurs de suppression et des E/S prédictives pour des mises à jour.
Consultez les vecteurs de suppression dans Databricks et Activer les vecteurs de suppression.
Type de donnéesBoolean
Valeur par défaut : Dépend des paramètres d’administration de l’espace de travail et de la version de Databricks Runtime. Consultez Activer automatiquement les vecteurs de suppression.
logRetentionDuration Durée de conservation de l’historique d’une table. VACUUM les opérations remplacent ce seuil de rétention.
Databricks nettoie automatiquement les entrées de journal antérieures à l’intervalle de rétention chaque fois qu’un point de contrôle est écrit. La définition de cette propriété sur une valeur importante conserve de nombreuses entrées de journal. Cela n’a pas d’impact sur les performances, car les opérations sur le journal s'effectuent en temps constant. Les opérations sur l’historique sont parallèles, mais deviennent plus coûteuses à mesure que la taille du journal augmente.
Voir Configurer la conservation des données pour des requêtes de voyage dans le temps.
Type de donnéesCalendarInterval
Valeur par défaut : interval 30 days
minReaderVersion (Delta Lake uniquement) Version minimale requise du lecteur de protocole à lire à partir de ce tableau.
Databricks recommande de ne pas configurer manuellement cette propriété.
Consultez les protocoles et la compatibilité des fonctionnalités Delta Lake.
Type de donnéesInt
Valeur par défaut : 1
minWriterVersion (Delta Lake uniquement) Version minimale de l’enregistreur de protocole requise pour écrire dans cette table.
Databricks recommande de ne pas configurer manuellement cette propriété.
Consultez les protocoles et la compatibilité des fonctionnalités Delta Lake.
Type de donnéesInt
Valeur par défaut : 2
format-version (Tables managées Apache Iceberg uniquement) Version du format du tableau Iceberg.
Databricks recommande de ne pas configurer manuellement cette propriété.
Consultez Utiliser les fonctionnalités Apache Iceberg v3.
Type de donnéesInt
Valeur par défaut : 2
randomizeFilePrefixes true pour générer un préfixe aléatoire pour un chemin d’accès de fichier au lieu d’informations de partition.
Type de donnéesBoolean
Valeur par défaut : false
targetFileSize Taille de fichier cible en octets ou unités supérieures pour le réglage des fichiers. Par exemple, 104857600 (octets) ou 100mb.
Consultez la taille du fichier de données Control.
Type de donnéesString
Valeur par défaut : (« none »)
parquet.compression.codec Codec de compression pour une table.
Valeurs valides : ZSTD, , SNAPPYGZIP, LZ4, BROTLI (prise en charge varie selon le format)
Cette propriété garantit que toutes les futures écritures dans la table utilisent le codec choisi, en remplaçant le cluster ou la session par défaut (spark.sql.parquet.compression.codec). Toutefois, les paramètres DataFrame .write.option("compression", "...") ponctuels sont toujours prioritaires. Disponible dans Databricks Runtime 16.0 et versions ultérieures. Notez que les fichiers existants ne sont pas réécrits automatiquement. Pour recomprimer les données existantes avec votre format choisi, utilisez OPTIMIZE table_name FULL.
Type de donnéesString
Valeur par défaut : ZSTD
parquet.format.version (Delta Lake uniquement) Version du format Parquet utilisée lors de l’écriture de fichiers de données. Spécification des résultats dans Databricks Runtime à l’aide d’encodages 2.12.0 Parquet plus avancés et d’en-têtes de page de données.
Les valeurs valides sont 1.0.0 et 2.12.0correspondent aux versions du format Apache Parquet.
Cette propriété concerne uniquement les tables Delta Lake. Ne définissez pas cette propriété pour les tables Iceberg, UniForm ou accessibles par les moteurs non Databricks Runtime.
Type de donnéesString
Valeur par défaut : 1.0.0
appendOnly true pour rendre la table uniquement ajoutable. Les tables append-only n’autorisent pas la suppression d’enregistrements existants ou la mise à jour des valeurs existantes.
Type de donnéesBoolean
Valeur par défaut : false
autoOptimize.autoCompact Combine automatiquement de petits fichiers dans les partitions de table pour réduire les problèmes de petits fichiers. Accepte auto (recommandé), true, legacyou false.
Voir Compactage automatique.
Type de donnéesString
Valeur par défaut : (« none »)
checkpoint.writeStatsAsJson true pour écrire des statistiques de fichier dans des points de contrôle au format JSON pour la stats colonne.
Type de donnéesBoolean
Valeur par défaut : false
checkpoint.writeStatsAsStruct true pour écrire des statistiques de fichier dans des points de vérification au format struct pour la stats_parsed colonne et pour écrire des valeurs de partition sous forme de structure pour partitionValues_parsed.
Type de donnéesBoolean
Valeur par défaut : true
checkpointPolicy classic pour les points de contrôle classiques. v2 pour les points de contrôle v2.
Consultez Point de contrôle V2 et compatibilité des tables avec clustering liquide.
Type de donnéesString
Valeur par défaut : classic
columnMapping.mode Active le mappage de colonnes pour les colonnes de table et les colonnes Parquet correspondantes qui utilisent des noms différents. Les valeurs valides sont none, nameet id.
Voir Renommer et supprimer des colonnes avec le mappage de colonnes Delta Lake.
Remarque : L’activation columnMapping.mode active randomizeFilePrefixesautomatiquement .
Type de donnéesDeltaColumnMappingMode
Valeur par défaut : none
compatibility.symlinkFormatManifest.enabled (Delta Lake uniquement) true pour configurer la table Delta Lake afin que toutes les opérations d’écriture sur la table mettent automatiquement à jour les manifestes.
Type de donnéesBoolean
Valeur par défaut : false
enableChangeDataFeed true pour activer le flux de modifications des données.
Consultez Utiliser le flux de données modifiées.
Type de donnéesBoolean
Valeur par défaut : false
enableTypeWidening true pour permettre l’élargissement du type.
Consultez Élargissement du type.
Type de donnéesBoolean
Valeur par défaut : false
isolationLevel Degré auquel une transaction doit être isolée des modifications effectuées par des transactions concurrentes.
Les valeurs valides sont Serializable et WriteSerializable.
Consultez les niveaux d’isolation (WriteSerializable et Serializable).
Type de donnéesString
Valeur par défaut : WriteSerializable
randomPrefixLength Nombre de caractères à générer pour les préfixes aléatoires lorsque randomizeFilePrefixes est true.
Type de donnéesInt
Valeur par défaut : 2
setTransactionRetentionDuration Durée la plus courte dans laquelle les nouveaux instantanés conservent les identificateurs de transaction (par exemple, SetTransactions). Les nouveaux instantanés expirent et ignorent les identificateurs de transaction antérieurs ou égaux à la durée spécifiée par cette propriété. L’identificateur SetTransaction est utilisé pour rendre l'écriture idempotente. Pour plus d’informations, consultez Utilisation foreachBatch pour les écritures de tables idempotentes .
Type de donnéesCalendarInterval
Valeur par défaut : (« none »)