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;