第27章视图与索引
本章描述如何创建和管理视图(VIEW)。视图基于用户的需求产生,保存任何结果把数据设为一个view。Hive中View的使用与SQL中View的使用一样。它是一个标准的RDBMS概念。可以在视图上执行所有DML操作。
27.1 创建视图(Creatinga View)
在执行一个SELECT语句时,创建一个视图。语法如下:
CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ...) ]
[COMMENT table_comment]
AS SELECT ...
27.1.1 创建视图实例
创建一个视图的例子。使用之前创建emp表,执行查询检索薪资大于且等于30000的员工详细信息。存储结果在视图emp_30000中。创建视图emp_30000的语句如下:
CREATE VIEW emp_30000
AS
SELECT * FROM employee
WHERE salary>30000;
执行语句和结果如下:
27.2 删除视图(Droppinga View)
删除视图的语法如下:
DROP VIEW view_name
执行如下查询语句删除一个名为emp_30000的视图:
DROP VIEW emp_30000;
27.3 创建索引(Creatingan Index)
索引(Index)只是表的特定列上的指针。 创建索引(Index)意味着在表的特定列上创建指针。 其语法如下:
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 (...)]
27.3.1创建索引实例
创建索引的例子,使用表emp,给emp表的salary列创建index_salary索引。执行如下语句创建索引:
CREATE INDEX inedx_salary ON TABLE emp (salary)
AS
'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
WITH DEFERRED REBUILD;
它是salary列的指针。如果列被修改,则使用索引值存储更改
27.4 删除索引(Droppingan Index)
删除索引的语法如下:
DROP INDEX <index_name> ON<table_name>
执行如下语句,删除index_salary索引:
DROP INDEX index_salary ON emp;