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 테이블을 사용합니다. 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;