@Arslan6and6
2016-05-18T18:38:45.000000Z
字数 1693
阅读 672
第七章、大数据仓库Hive深入
---Hive表的创建及测试
依据课程中讲解的 Hive 中各种表的创建方式以及应用场景进行练习回顾,以下几点必须体现:
创建表
查看表属性,其中 Table Type: MANAGED_TABLE 表示管理表
此表用于单一业务环境
创建表 语法: create external table 表名
查看表属性,其中 Table Type: EXTERNAL_TABLE
外部表用于多业务公用一个数据文件的场景
创建表
分区表用于时间增量数据,以便于分时间查询数据
举例:
按上题创建内部 dept 表后,HDFS页面显示如下:
删除内部表dept
HDFS页面显示,内部表 dept 目录已不存在
举例:
依照上题,同样使用HDFS系统中/data/dept/dept.txt的数据创建分区表dept3。通常创建分区表会 location 在HDFS中另外设置数据文件存储位置,而不同于内部表使用HDFS默认路径/user/hive/warehouse
上传数据文件 dept.txt 至 HDFS系统 /data/dept。
此时,外部表dept2和dept3都已加载共同数据 /data/dept/dept.txt
现删除外部表 dept2, 外部表 dept3 正常,HDFS系统数据文件依然存在
####分区表的功能:
分区表用于时间增量数据,以便于分时查询提高查询速度。并可以创建一级分区二级分区,如一级按月分区二级按日分区。
语法:
create table 表名 (字段 ,字段数据类型 ...) partitioned by (date string) row format delimited fields terminated by '分隔符';
举例:
语法:
load data [local] inpath "/opt/modules/apache-hive-0.13.1-bin/emp.txt" into [overwrite] table 表名 partition (date='日期');
举例:
语法:
select * from 表名 where date='日期';
举例:
![21.jpg-34.3kB][19]
语法:
create table 表名 (字段 ,字段数据类型 ...) partitioned by (date string,time string) row format delimited fields terminated by '分隔符';
举例:
####加载二级分区表数据
语法:
load data [local] inpath "/opt/modules/apache-hive-0.13.1-bin/emp.txt" into [overwrite] table 表名 partition (date='日期', time='时间');
举例:加载日期20150521,时间0759及日期20150521,时间1959两份数据
语法:
select * from 表名 where date='日期' and time='时间';
举例:
单独检索 日期20150521及时间0759
合并检索 日期20150521中的时间0759和1959