Hive - Görünüm ve Dizinler

Bu bölümde görünümlerin nasıl oluşturulacağı ve yönetileceği açıklanmaktadır. Görünümler, kullanıcı gereksinimlerine göre oluşturulur. Herhangi bir sonuç kümesi verisini bir görünüm olarak kaydedebilirsiniz. Hive'daki görünümün kullanımı SQL'deki görünümle aynıdır. Standart bir RDBMS konseptidir. Tüm DML işlemlerini bir görünüm üzerinde gerçekleştirebiliriz.

Bir Görünüm Oluşturma

Bir SELECT ifadesini yürütürken bir görünüm oluşturabilirsiniz. Sözdizimi aşağıdaki gibidir:

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

Misal

Bir örnek alalım. Id, Ad, Maaş, Görev ve Dept alanları ile aşağıda verilen çalışan tablosunu varsayalım. 30000 Rs'den fazla maaş kazanan çalışan ayrıntılarını almak için bir sorgu oluşturun.emp_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  |
+------+--------------+-------------+-------------------+--------+

Aşağıdaki sorgu, yukarıdaki senaryoyu kullanarak çalışan ayrıntılarını alır:

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

Bir Görünümü Bırakma

Bir görünümü bırakmak için aşağıdaki sözdizimini kullanın:

DROP VIEW view_name

Aşağıdaki sorgu emp_30000 adlı bir görünümü bırakır:

hive> DROP VIEW emp_30000;

Bir Dizin Oluşturma

Bir Dizin, bir tablonun belirli bir sütunundaki göstericiden başka bir şey değildir. Bir indeks oluşturmak, bir tablonun belirli bir sütununda bir işaretçi oluşturmak anlamına gelir. Sözdizimi aşağıdaki gibidir:

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

Misal

İndeks için bir örnek alalım. Daha önce Id, Ad, Maaş, Görev ve Bölüm alanları ile kullandığımız aynı çalışan tablosunu kullanın. Çalışan tablosunun maaş sütununda index_salary adlı bir dizin oluşturun.

Aşağıdaki sorgu bir dizin oluşturur:

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

Maaş sütununa bir göstericidir. Sütun değiştirilirse, değişiklikler bir indeks değeri kullanılarak saklanır.

Bir Dizin Düşürmek

Bir dizini bırakmak için aşağıdaki sözdizimi kullanılır:

DROP INDEX <index_name> ON <table_name>

Aşağıdaki sorgu, index_salary adlı bir dizini bırakır:

hive> DROP INDEX index_salary ON employee;