Hive - Xem và lập chỉ mục

Chương này mô tả cách tạo và quản lý dạng xem. Lượt xem được tạo dựa trên yêu cầu của người dùng. Bạn có thể lưu bất kỳ dữ liệu tập hợp kết quả nào dưới dạng một dạng xem. Việc sử dụng chế độ xem trong Hive cũng giống như cách sử dụng chế độ xem trong SQL. Nó là một khái niệm RDBMS tiêu chuẩn. Chúng tôi có thể thực thi tất cả các hoạt động DML trên một khung nhìn.

Tạo chế độ xem

Bạn có thể tạo một dạng xem tại thời điểm thực hiện câu lệnh SELECT. Cú pháp như sau:

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

Thí dụ

Hãy để chúng tôi lấy một ví dụ để xem. Giả sử bảng nhân viên như được đưa ra bên dưới, với các trường Id, Tên, Lương, Chức vụ và Phòng ban Tạo truy vấn để truy xuất thông tin chi tiết về nhân viên kiếm được mức lương hơn 30000 Rs. Chúng tôi lưu trữ kết quả trong dạng xem có tênemp_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  |
+------+--------------+-------------+-------------------+--------+

Truy vấn sau truy xuất chi tiết nhân viên bằng cách sử dụng tình huống trên:

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

Bỏ chế độ xem

Sử dụng cú pháp sau để thả một lượt xem:

DROP VIEW view_name

Truy vấn sau đưa ra chế độ xem có tên là emp_30000:

hive> DROP VIEW emp_30000;

Tạo chỉ mục

Chỉ mục không là gì ngoài một con trỏ trên một cột cụ thể của bảng. Tạo chỉ mục có nghĩa là tạo một con trỏ trên một cột cụ thể của bảng. Cú pháp của nó như sau:

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

Thí dụ

Hãy để chúng tôi lấy một ví dụ cho chỉ mục. Sử dụng cùng một bảng nhân viên mà chúng ta đã sử dụng trước đó với các trường Id, Tên, Lương, Chức vụ và Phòng ban Tạo một chỉ mục có tên là index_salary trên cột lương của bảng nhân viên.

Truy vấn sau tạo một chỉ mục:

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

Nó là một con trỏ đến cột lương. Nếu cột được sửa đổi, các thay đổi được lưu trữ bằng giá trị chỉ mục.

Giảm chỉ số

Cú pháp sau được sử dụng để bỏ chỉ mục:

DROP INDEX <index_name> ON <table_name>

Truy vấn sau đây đưa ra một chỉ mục có tên là index_salary:

hive> DROP INDEX index_salary ON employee;