Hive-views-and-indexes

提供:Dev Guides
移動先:案内検索

Hive-ビューとインデックス

この章では、ビューを作成および管理する方法について説明します。 ビューは、ユーザーの要件に基づいて生成されます。 結果セットのデータはすべてビューとして保存できます。 Hiveのビューの使用法は、SQLのビューの使用法と同じです。 これは標準のRDBMSコンセプトです。 ビューですべてのDML操作を実行できます。

ビューを作成する

SELECTステートメントの実行時にビューを作成できます。 構文は次のとおりです。

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

例を見てみましょう。 Id、Name、Salary、Designation、Deptの各フィールドを持つ従業員テーブルを以下のように想定します。 Rs 30000を超える給与を稼ぐ従業員の詳細を取得するクエリを生成します。 結果を* 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  |
+------+--------------+-------------+-------------------+--------+

次のクエリは、上記のシナリオを使用して従業員の詳細を取得します。

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

ビューを削除する

ビューを削除するには、次の構文を使用します。

DROP VIEW view_name

次のクエリは、emp_30000という名前のビューを削除します。

hive> DROP VIEW emp_30000;

インデックスを作成する

インデックスは、テーブルの特定の列へのポインタにすぎません。 インデックスの作成とは、テーブルの特定の列にポインターを作成することを意味します。 その構文は次のとおりです。

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

インデックスの例を見てみましょう。 Id、Name、Salary、Designation、Deptの各フィールドで以前に使用したのと同じ従業員テーブルを使用します。 employeeテーブルのsalary列にindex_salaryという名前のインデックスを作成します。

次のクエリはインデックスを作成します。

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

これは、給与列へのポインタです。 列が変更された場合、変更はインデックス値を使用して保存されます。

インデックスの削除

インデックスを削除するには、次の構文を使用します。

DROP INDEX <index_name> ON <table_name>

次のクエリは、index_salaryという名前のインデックスを削除します。

hive> DROP INDEX index_salary ON employee;