HIVE 第六章 表分类
Posted 麦田里的守望者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE 第六章 表分类相关的知识,希望对你有一定的参考价值。
公告:更新任在持续,更多精彩内容敬请关注!
HIVE的表按类型 分为 管理表、外部表、分区表。管理表:前面章节案例中所创建的表都称为管理表
,有时候也称为内部表
。因为这种表hive会控制数据的生命周期(在删除表的同时也会删除dhfs上的文本数据)因此管理表不方便和其他工作共享数据
。外部表: 和管理表比较外部表在创建的时候多一个中external
关键字告诉Hive这是外部表,而后面的location
则是告诉hive数据位于哪个位置或者路径下。因为是外部表hive并非完全拥有这些数据,因此在删除外部表的时候并不会删除location
参数指定路径的数据。分区表: 无论外部表还是管理表都可以在创建的时候指定分区,对于这种指定分区的表称为分区表。数据库分区的概念已经纯在很久,其可以有多种形式,但是通常是使用分区来水平分散压力,将数据从物理上转移和使用最频繁的用户更接近的地方,以及实现其他目的。
创建外部表
create external table if not exists t_user( name string , salary float , subordinates array<string> , deductions map<string,float> , address struct<country:string,state:string> ) row format delimited fields terminated by ',' collection items terminated by '|' map keys terminated by '>' lines terminated by '\n' stored as textfile location '/hive/database/baizhi.db/t_user' tblproperties ('creator'='jiangzz')
创建分区表
把上例中的信息按照country
,state
属性分区
alter table t_user add if not exists partition (country='china',state='beijing') location 'hive/database/baizhi.db/t_user/country=china/state=beijing' partition (country='china',state='shanghai') location 'hive/database/baizhi.db/t_user/country=china/state=beijing';
注意一般情况添加分区不给管理表
添加因为管理表在删除分区的时候会将数据删除,所以一般在实际开发中使用外部表的使用场景是比较多的。
alter table t_user partition (country='china',state='beijing') set location
'hdfs://mycluster/hive/database/baizhi.db/t_user/country=china/state=beijing';
注意localtion
的值必须是absolute路径。
alter table t_user drop partition(country='china',state='beijing');
本期内容暂时更新到此,更多精彩内容请持续关注jiangzz_wy公众账号,如有任何疑问也可以添加小编jiangzz_wx微信。
以上是关于HIVE 第六章 表分类的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第六章总线-第一节:总线概述1(概念,分类和系统总线的结构)