Hive: visualizzazione e indici

Questo capitolo descrive come creare e gestire le visualizzazioni. Le visualizzazioni vengono generate in base ai requisiti dell'utente. È possibile salvare qualsiasi dato del set di risultati come vista. L'utilizzo della vista in Hive è uguale a quello della vista in SQL. È un concetto RDBMS standard. Possiamo eseguire tutte le operazioni DML su una vista.

Creazione di una vista

È possibile creare una vista al momento dell'esecuzione di un'istruzione SELECT. La sintassi è la seguente:

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

Esempio

Facciamo un esempio per la visualizzazione. Assumi la tabella dei dipendenti come indicato di seguito, con i campi Id, Name, Stipendio, Designation e Dept. Genera una query per recuperare i dettagli dei dipendenti che guadagnano uno stipendio superiore a Rs 30000. Memorizziamo il risultato in una vista denominataemp_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 seguente query recupera i dettagli del dipendente utilizzando lo scenario precedente:

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

Eliminazione di una vista

Utilizzare la seguente sintassi per eliminare una visualizzazione:

DROP VIEW view_name

La query seguente elimina una vista denominata emp_30000:

hive> DROP VIEW emp_30000;

Creazione di un indice

Un indice non è altro che un puntatore su una particolare colonna di una tabella. Creare un indice significa creare un puntatore su una particolare colonna di una tabella. La sua sintassi è la seguente:

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

Esempio

Facciamo un esempio per index. Utilizza la stessa tabella dei dipendenti che abbiamo utilizzato in precedenza con i campi Id, Nome, Stipendio, Designazione e Reparto. Crea un indice denominato index_salary nella colonna salario della tabella dei dipendenti.

La query seguente crea un indice:

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

È un puntatore alla colonna dello stipendio. Se la colonna viene modificata, le modifiche vengono memorizzate utilizzando un valore di indice.

Eliminazione di un indice

La seguente sintassi viene utilizzata per eliminare un indice:

DROP INDEX <index_name> ON <table_name>

La query seguente rilascia un indice denominato index_salary:

hive> DROP INDEX index_salary ON employee;