Vue et indexation Hive : Créer avec des exemples
⚡ Résumé intelligent
Dans Hive, les vues sont des requêtes enregistrées qui se comportent comme des tables en lecture seule, tandis que les index sont des pointeurs vers une colonne qui accélèrent les recherches ; les deux sont créés avec de courtes instructions HiveQL présentées ici.

Qu'est-ce qu'une vue ?
Les vues sont similaires aux tables et sont générées en fonction des besoins. Une vue est un objet purement logique sans stockage propre : Hive ne conserve que le texte de la requête dans le métastore et l’évalue à chaque fois que la vue est consultée.
- Nous pouvons enregistrer n'importe quelle donnée d'ensemble de résultats sous forme de vue dans Hive
- L'utilisation est similaire aux vues utilisées dans SQL
- Une vue est en lecture seule, elle ne peut donc pas être la cible d'une instruction LOAD, INSERT ou ALTER qui écrit des données.
Création de vue :
syntaxe:
Create VIEW <VIEWNAME> AS SELECT
La version complète documentée accepte également une clause IF NOT EXISTS et une liste de colonnes facultative, ce qui est utile lorsque la liste SELECT contient des expressions plutôt que de simples noms de colonnes.
Exemple :
Hive>Create VIEW Sample_View AS SELECT * FROM employees WHERE salary>25000
Dans cet exemple, nous créons la vue Sample_View, qui affiche toutes les valeurs de ligne dont le champ salaire est supérieur à 25 000. Le filtre se trouve à l’intérieur de la vue ; ainsi, toute requête qui sélectionne des données dans Sample_View ne verra que ces lignes.
Qu'est-ce qu'un indice ?
Les index sont des pointeurs vers un nom de colonne spécifique d'une table. Leur objectif est d'améliorer la vitesse de recherche : sans index, une requête avec un prédicat tel que OÙ tab1.col1 = 10 charge la table entière ou la partition et traite chaque ligne, tandis qu'un index sur col1 permet à Hive de ne lire qu'une partie du fichier.
- L'utilisateur doit définir manuellement l'index
- Lorsque nous créons un index, cela signifie que nous créons un pointeur vers un nom de colonne particulier de la table.
- Toute modification apportée à la colonne présente dans le tableau est enregistrée à l'aide de la valeur d'index créée sur le nom de la colonne.
Ce gain de vitesse a un coût. La création de l'index engendre des frais de traitement supplémentaires, et l'index lui-même occupe de l'espace disque qui doit être géré en parallèle de celui de la table.
syntaxe:
Create INDEX <INDEX_NAME> ON TABLE <TABLE_NAME(column names)>
Exemple :
Create INDEX sample_Index ON TABLE guruhive_internaltable(id)
Nous créons ici un index sur la table guruhive_internaltable pour la colonne nommée id. Notez qu'une requête complète sur une version prenant encore en charge l'indexation nécessite également une clause index-handler, comme détaillé dans la section suivante.
Différence entre vue et index dans Hive
Les vues et les index sont souvent présentés ensemble car ils s'appuient tous deux sur une table existante, mais ils résolvent des problèmes différents. Une vue modifie ce qu'une requête voit, tandis qu'un index améliore la rapidité avec laquelle Hive trouve les données. Le tableau ci-dessous les compare.
| Aspect | Consultation | Sommaire |
|---|---|---|
| Ce qu'il stocke | Seule l'instruction SELECT, dans le métastore | Une table d'index distincte contenant des pointeurs vers les données |
| Interet | Simplifiez ou limitez les résultats d'une requête. | Réduire la quantité de données analysées pour un prédicat |
| Coût du disque | Aucun | Stockage supplémentaire et reconstruction après les modifications de données |
| Accès en écriture | Lecture seule | Non interrogée directement ; l’optimiseur l’utilise |
| Statut actuel : | Entièrement pris en charge | Supprimé dans Hive 3.0 |
En pratique, une vue est créée pour faciliter la lecture et contrôler l'accès, tandis qu'un index est créé uniquement pour optimiser les performances sur une colonne spécifique.
Types d'index dans Hive et leur syntaxe
Les versions de Hive jusqu'à la version 2.x incluaient deux gestionnaires d'index, et le gestionnaire était spécifié dans la clause AS obligatoire. L'indexation compacte est apparue dans Hive 0.7.0 et l'indexation bitmap dans Hive 0.8.0.
- Index compact : Cette méthode stocke la valeur ainsi que l'adresse du bloc HDFS qui la contient, au lieu d'enregistrer l'emplacement de chaque occurrence. Elle convient aux colonnes comportant de nombreuses valeurs distinctes.
- Index des bitmaps : stocke une image bitmap par valeur distincte, ce qui est l'approche habituelle pour une colonne ne comportant qu'un petit nombre de valeurs distinctes, comme un indicateur de statut ou de genre.
Un index compact est créé, listé et supprimé comme suit :
CREATE INDEX table01_index ON TABLE table01 (column2) AS 'COMPACT'; SHOW INDEX ON table01; DROP INDEX table01_index ON table01;
L'option WITH DEFERRED REBUILD enregistre l'index sans le remplir, ce qui permet de planifier sa reconstruction séparément avec ALTER INDEX. Un index bitmap est créé de la même manière, avec un nom de gestionnaire différent :
CREATE INDEX table03_index ON TABLE table03 (column4) AS 'BITMAP' WITH DEFERRED REBUILD; ALTER INDEX table03_index ON table03 REBUILD; SHOW FORMATTED INDEX ON table03; DROP INDEX table03_index ON table03;
Un index n'est pas actualisé automatiquement. À chaque nouvelle donnée reçue par la table de base, la commande ALTER INDEX … REBUILD doit être exécutée. Sur une table partitionnée, la reconstruction peut être limitée à une seule partition.
Pourquoi l'indexation a-t-elle été supprimée dans Hive 3.0 ?
L'indexation a été supprimée de Hive dans la version 3.0 (HIVE-18448). Par conséquent, les commandes CREATE INDEX, SHOW INDEX et DROP INDEX ne sont plus disponibles sur un cluster actuel. Cette fonctionnalité s'avérait rarement rentable après la mise en place du stockage en colonnes et de l'optimiseur basé sur les coûts. Trois alternatives permettent de la remplacer.
- Vues matérialisées : introduit dans Hive 3.0.0, un vue matérialisée stocke le résultat précalculé d'une requête et l'optimiseur réécrit automatiquement les requêtes entrantes en fonction de ce résultat.
- Formats de fichiers colonnaires : ORC et Parquet possèdent leurs propres index légers et statistiques min/max, permettant ainsi au lecteur de sauter des bandes, des blocs ou des fichiers entiers sans aucun index défini par l'utilisateur.
- Cloisons et seaux : partitionnement et compartimentage Éliminer les données au niveau des répertoires et des fichiers permet généralement de supprimer beaucoup plus d'entrées qu'un index.
Sur Hive 2.x, un index reste valide, mais pour les nouveaux travaux, il est préférable d'utiliser l'une des options ci-dessus.
