Hive - Affichage et index

Ce chapitre décrit comment créer et gérer des vues. Les vues sont générées en fonction des besoins des utilisateurs. Vous pouvez enregistrer toutes les données d'ensemble de résultats sous forme de vue. L'utilisation de la vue dans Hive est la même que celle de la vue dans SQL. C'est un concept de SGBDR standard. Nous pouvons exécuter toutes les opérations DML sur une vue.

Créer une vue

Vous pouvez créer une vue au moment de l'exécution d'une instruction SELECT. La syntaxe est la suivante:

CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ...) ]
[COMMENT table_comment]
AS SELECT ...

Exemple

Prenons un exemple pour vue. Supposons la table des employés comme donnée ci-dessous, avec les champs Id, Nom, Salaire, Désignation et Département. Générez une requête pour récupérer les détails des employés qui gagnent un salaire supérieur à Rs 30000. Nous stockons le résultat dans une vue nomméeemp_30000.

+------+--------------+-------------+-------------------+--------+
| ID   | Name         | Salary      | Designation       | Dept   |
+------+--------------+-------------+-------------------+--------+
|1201  | Gopal        | 45000       | Technical manager | TP     |
|1202  | Manisha      | 45000       | Proofreader       | PR     |
|1203  | Masthanvali  | 40000       | Technical writer  | TP     |
|1204  | Krian        | 40000       | Hr Admin          | HR     |
|1205  | Kranthi      | 30000       | Op Admin          | Admin  |
+------+--------------+-------------+-------------------+--------+

La requête suivante récupère les détails de l'employé à l'aide du scénario ci-dessus:

hive> CREATE VIEW emp_30000 AS
SELECT * FROM employee
WHERE salary>30000;

Supprimer une vue

Utilisez la syntaxe suivante pour supprimer une vue:

DROP VIEW view_name

La requête suivante supprime une vue nommée emp_30000:

hive> DROP VIEW emp_30000;

Créer un index

Un index n'est rien d'autre qu'un pointeur sur une colonne particulière d'une table. Créer un index signifie créer un pointeur sur une colonne particulière d'une table. Sa syntaxe est la suivante:

CREATE INDEX index_name
ON TABLE base_table_name (col_name, ...)
AS 'index.handler.class.name'
[WITH DEFERRED REBUILD]
[IDXPROPERTIES (property_name=property_value, ...)]
[IN TABLE index_table_name]
[PARTITIONED BY (col_name, ...)]
[
   [ ROW FORMAT ...] STORED AS ...
   | STORED BY ...
]
[LOCATION hdfs_path]
[TBLPROPERTIES (...)]

Exemple

Prenons un exemple pour l'index. Utilisez la même table d'employés que celle que nous avons utilisée précédemment avec les champs Id, Nom, Salaire, Désignation et Dept. Créez un index nommé index_salary sur la colonne Salaire de la table Employé.

La requête suivante crée un index:

hive> CREATE INDEX inedx_salary ON TABLE employee(salary)
AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';

C'est un pointeur vers la colonne des salaires. Si la colonne est modifiée, les modifications sont stockées à l'aide d'une valeur d'index.

Supprimer un index

La syntaxe suivante est utilisée pour supprimer un index:

DROP INDEX <index_name> ON <table_name>

La requête suivante supprime un index nommé index_salary:

hive> DROP INDEX index_salary ON employee;