Hive学习之视图、索引DDL

来源:互联网 发布:php 数组 编辑:程序博客网 时间:2024/05/21 05:18

创建视图

      视图是纯逻辑对象并不关联任何存储,下面的语句使用给定view_name名称创建视图,若view_name与现存的表或者视图重名,则出错。

CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ...) ] [COMMENT view_comment][TBLPROPERTIES(property_name = property_value, ...)]AS SELECT ...

      在该语句中若不提供列名,视图的列名将根据SELECT .子句生成,如果SELECT.子句包含没有别名的标量表达式如x+y,视图的列名将按照_C0,_C1等形式产生。当重命名列名时可以指定列注释。若SELECT .子句无效则创建视图将会失败。

      当被创建时,视图的schema是冻结的,对当前表的后续修改不会影响到视图的schema。如果当前表被删除或者改变,后续对视图的查询将会失败。视图是只读的,不能作为LOAD/INSERT的目标。一个视图可以包含ORDERBY和LIMIT从句,如果查询该视图的语句也包含这些从句,查询层级的从句将会在视图从句之后计算。例如视图指定了LIMIT 5,相关查询语句为select from v LIMIT 10,那么最多5行记录被返回。创建视图的例子如下:

hive> create view test_view as select * from test;OKTime taken:0.818 secondshive>describe test;OKa1                  string                                       b1                  string                                       c1                  string                                       d                    int                                         # PartitionInformation          # col_name                  data_type               comment            d                     int                                         Time taken:0.315 seconds, Fetched: 9 row(s)hive>describe test_view;OKa1                  string                                       b1                  string                                       c1                  string                                       d                   int                                         Time taken:0.212 seconds, Fetched: 4 row(s)

删除视图

      删除视图将会移除指定视图的元数据,当删除被其它视图引用的视图时,不会给出警告信息,依赖该视图的视图将会失效,必须手动删除或者重新创建。删除视图的语句如下:

DROP VIEW [IF EXISTS] view_name

修改视图属性

      修改视图属性的语句为:

ALTER VIEW view_name SET TBLPROPERTIES table_propertiestable_properties:  : (property_name = property_value,property_name = property_value, ...)

修改视图的AS SELECT子句

ALTER VIEW view_name AS select_statement

      修改视图的AS SELECT子句会改变视图的定义,需要注意的是要修改的视图必须已经存在,如果视图拥有分区,分区将不会被Alter View As Select替代。

创建/删除/修改索引

创建索引

      创建索引的语句如下,该语句使用给定的列集合在表上创建索引。index.handler.class.name指定了索引处理器,如org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler。如果使用WITH DEFERRED REBUILD子句,那么新的索引被初始化为空的,无论表中是否含有数据。默认情况下,索引的分区匹配表的分区,PARTITIONED BY子句可以用来指定表分区的子集(该子集也可以是空的用以指示索引覆盖表的所有分区),例如一个表被date和region分区,索引的分区仅有date,那么索引的分区将会覆盖所有的region分区。在同一个数据库中,索引名称可以用于多个表,这是因为索引名称是包含表名的全限定名称。在不指定保存索引的名称时,索引被保存在名为数据库名__表名_索引名__的表中。

CREATE INDEX index_nameON TABLE base_table_name (col_name, ...)AS  'index.handler.class.name'[WITH DEFERRED REBUILD][IDXPROPERTIES(property_name=property_value, ...)][IN TABLE index_table_name][   [ ROW FORMAT ...] STORED AS ...   | STORED BY ...][LOCATION hdfs_path][TBLPROPERTIES(...)][COMMENT"index comment"]

删除索引

DROP INDEX [IFEXISTS] index_name ON table_name

      删除索引的同时也删除保存索引的表。

修改索引

      下面的语句为使用WITH DEFERRED REBUILD子句的索引创建索引,或者重建已经创建的索引,如果指定分区,仅有该分区被重建。

ALTER INDEX index_name ON table_name [PARTITION partitionSpec] REBUILD

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 长裤衬衫裙邹了怎么办 100棉衬衣皱了怎么办? 短袖t恤袖口大了怎么办 短袖底下卷边了怎么办 棉质短袖衫缩水怎么办 纯棉t恤缩水了怎么办 t恤缩水变小了怎么办 衣服掉在雨棚上怎么办 车衣密码锁忘记密码怎么办 衣服的铁拉链弯怎么办 去旅行衣服皱了怎么办 衣服抽绳出来了怎么办 裤子的绑带掉了怎么办 网纱裙的边卷了怎么办 堵奶宝宝吸不通怎么办 棉麻裙子掉毛怎么办 10个月宝宝吃手怎么办 婴儿连体衣长了怎么办 冰丝面料变长了怎么办 t恤袖口大了怎么办 长袖t恤袖子长了怎么办 机打的扣子掉了怎么办 四个月宝宝头扁怎么办 鞋子前面穿翘了怎么办 休完产假没人带怎么办 休完产假孩子吃奶怎么办 巴布豆童鞋里面臭了到底怎么办 连体裤有点卡档怎么办 宝宝连体衣扣子掉了怎么办 买衣服被骂了怎么办? 把人车刮了跑了怎么办 打工打不下去了怎么办 白色衣服变粉了怎么办 一量血压就紧张怎么办 一紧张就血压高怎么办 不在上班时间在单位受伤怎么办 生活过得太压抑怎么办 高低床踏板断了怎么办 高低床 孩子摔下来怎么办 小孩子太小高低床爬梯怎么办 辞职后单位不发工资怎么办