Aller au contenu principal

Index d’évitement des données

important

DATASKIPPING INDEX a été supprimé dans Databricks Runtime 7.0. Nous vous recommandons d'utiliser plutôt les tables Delta, qui offrent des capacités de saut de données améliorées.

important

Cette documentation a été retirée et pourrait ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge. Voir le saut de données.

Description

Outre l'élagage des partitions, Databricks Runtime inclut une autre fonctionnalité visant à éviter l'analyse de données non pertinentes, à savoir l'index de saut de données. Il utilise les statistiques au niveau des fichiers afin d'effectuer un saut supplémentaire à la granularité des fichiers. Ceci fonctionne avec, mais ne dépend pas du partitionnement de style Hive.

L'efficacité du saut de données dépend des caractéristiques de vos données et de leur Layout physique. Étant donné que le saut est effectué au niveau de la granularité des fichiers, il est important que vos données soient partitionnées horizontalement sur plusieurs fichiers. Cela se produit généralement en conséquence de plusieurs Jobs d'ajout, du partitionnement (shuffle), de la segmentation et/ou de l'utilisation de spark.sql.files.maxRecordsPerFile. Il fonctionne mieux sur les tables avec des compartiments triés (df.write.bucketBy(...).sortBy(...).saveAsTable(...) / CREATE TABLE ... CLUSTERED BY ... SORTED BY ...), ou avec des colonnes corrélées aux clés de partition (par exemple, brandName - modelName, companyID - stockPrice), mais aussi lorsque vos données présentent simplement une certaine capacité de tri / de regroupement (par exemple, orderID, bitcoinValue).

remarque

Cette fonctionnalité bêta présente un certain nombre d'importantes limitations :

  • C'est optionnel : doit être activé manuellement, par table.
  • Il s'agit uniquement de SQL : il n'y a pas d'API DataFrame pour cela.
  • Une fois qu'une table est indexée, les effets des Opérations INSERT ou ADD PARTITION ultérieures ne sont pas garantis d'être visibles tant que l'index n'est pas explicitement actualisé.

Syntaxe SQL

Créer un index

SQL
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

Active l'omission de données sur la table donnée pour le premier (c.-à-d. plus à gauche) N colonnes prises en charge, où N est contrôlé par spark.databricks.io.skipping.defaultNumIndexedCols (default : 32)

partitionBy Les colonnes sont toujours indexées et ne sont pas prises en compte dans ce N .

Créer un index pour les colonnes

SQL
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
FOR COLUMNS (col1, ...)

Active l'ignorance des données sur la table donnée pour la liste de colonnes spécifiée. De même que ci-dessus, toutes les partitionBy colonnes seront toujours indexées en plus de celles spécifiées.

Décrire l'index

SQL
DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name

Affiche les colonnes de la table donnée qui sont indexées, ainsi que les types correspondants de statistiques au niveau du fichier qui sont collectés.

Si EXTENDED est spécifié, une troisième colonne appelée « effectiveness_score » s'affiche et donne une mesure approximative de l'avantage attendu de DataSkipping pour les filtres sur les colonnes correspondantes.

Refresh l’index complet

SQL
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

Reconstruit l'index entier. Par exemple. toutes les partitions de la table seront réindexées.

Refresh Partitions

SQL
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
PARTITION (part_col_name1[=val1], part_col_name2[=val2], ...)

Réindexe uniquement les partitions spécifiées. Cette opération devrait généralement être plus rapide que le refresh complet de l'index.

Supprimer l'index

SQL
DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

Désactive l'omission de données sur la table donnée et supprime toutes les données d'index.