Hive: vistas e índices

Este capítulo describe cómo crear y administrar vistas. Las vistas se generan según los requisitos del usuario. Puede guardar los datos del conjunto de resultados como una vista. El uso de la vista en Hive es el mismo que el de la vista en SQL. Es un concepto estándar de RDBMS. Podemos ejecutar todas las operaciones DML en una vista.

Crear una vista

Puede crear una vista en el momento de ejecutar una instrucción SELECT. La sintaxis es la siguiente:

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

Ejemplo

Tomemos como ejemplo un ejemplo. Suponga la tabla de empleados como se indica a continuación, con los campos Id, Nombre, Salario, Designación y Departamento. Genere una consulta para recuperar los detalles de los empleados que ganan un salario de más de 30000 rupias. Almacenamos el resultado en una vista llamadaemp_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 siguiente consulta recupera los detalles del empleado utilizando el escenario anterior:

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

Dejar caer una vista

Utilice la siguiente sintaxis para eliminar una vista:

DROP VIEW view_name

La siguiente consulta elimina una vista denominada emp_30000:

hive> DROP VIEW emp_30000;

Crear un índice

Un índice no es más que un puntero en una columna particular de una tabla. Crear un índice significa crear un puntero en una columna particular de una tabla. Su sintaxis es la siguiente:

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 (...)]

Ejemplo

Tomemos un ejemplo para index. Use la misma tabla de empleados que usamos anteriormente con los campos Id, Nombre, Salario, Designación y Departamento. Cree un índice llamado index_salary en la columna de salario de la tabla de empleados.

La siguiente consulta crea un índice:

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

Es un puntero a la columna de salario. Si se modifica la columna, los cambios se almacenan utilizando un valor de índice.

Dejar caer un índice

La siguiente sintaxis se utiliza para eliminar un índice:

DROP INDEX <index_name> ON <table_name>

La siguiente consulta suelta un índice llamado index_salary:

hive> DROP INDEX index_salary ON employee;