求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

Hive教程
Hive安装
Hive数据类型
Hive创建数据库
Hive删除数据库
Hive创建表
Hive修改表
Hive删除表
Hive分区
Hive内置运算符
Hive内置函数
Hive视图和索引
HiveQL Select Where
HiveQL Select Order By
HiveQL Select Group By
HiveQL Select Join
 
 

Hive视图和索引
796 次浏览
35次  

本章介绍如何创建和管理视图。根据用户的需求创建视图。可以将任何结果集数据保存为一个视图。视图在Hive的用法和SQL视图用法相同。它是一个标准的RDBMS概念。我们可以在视图上执行所有DML操作。

创建一个视图

可以创建一个视图,在执行SELECT语句的时候。语法如下:

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

示例

举个例子来看。假设employee表拥有如下字段:Id, Name, Salary, Designation 和 Dept。生成一个查询检索工资超过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创建一个名为index_salary的索引,对employee 表的salary列索引。

下面的查询创建一个索引:

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

这是一个指向salary列。如果列被修改,变更使用的索引值存储。

删除索引

下面的语法用来删除索引:

DROP INDEX <index_name> ON <table_name>  

下面的查询删除名为index_salary索引:

hive> DROP INDEX index_salary ON employee; 

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



796 次浏览
35次
 捐助