Index d’évitement des données
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.
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).
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
INSERTouADD PARTITIONultérieures ne sont pas garantis d'être visibles tant que l'index n'est pas explicitement actualisé.
Syntaxe SQL
Créer un index
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
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
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
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
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
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.