hive基本操作
1.创建表
(1)创建内部表
内部表:和数据库中的table基本一致,可直接理解为数据仓库中真实存在的表。
a.每个table在hive中都有一个相应的目录存储数据(hive数据仓库文件存储在一般在HDFS的‘/user/hive/warehouse下,warehouse文件夹下的文件夹名即为表名’) 注:external表不在此目录下
b.删除表时元数据与数据都会被删除
注意:内部表创建一般分为创建表结构和导入数据两部分
a.创建指定表结构:
hive>>create table t1 >>(tid int,tname string,age int) #说明表结构
>>location 'mytable/hive/t1' #制定出创建数据表位置,location指的是hdfs系统上的位置 >>row format delimited fields terminated by ','; #制定分隔符
上面只是创建了表的基本结构,没有进行数据导入,下面进行数据导入:
load data local inpath '/home/yu/data/test.txt' into table t1;
b.从hive中其他表拷贝
hive>>create table t2
>>row format delimited fields terminated by ',' #可省
>>as
>>select * from t1
(2)创建分区表
分区表:根据一定的条件将一个表分为多个分区表,可大大提高查询效率(查询效率可以由执行计划看出explain)
(3)创建外部表
外部表:a.元数据和内部表相同还是存储在数据库中,但是实际数据存储则存在较大差异
b.外部表只有一个过程,创建表和加载数据同时完成,实际数据并不会移动到hive中,只是与外部数据建立一个链接,当删除外部表时仅仅删除该链接
c.指向HDFS中存在的数据,可创建Partition
注意:创建外部表时因为外部表的实际数据是存储在HDFS上的,因此不需要进行数据导入,只要创建表的结构即可
因为创建外部表需要与hdfs上面的文件进行链接,因此我们首先将需要建立连接的表导入hdfs
hdfs dfs -mkdir /data_deal #首先创建目录,c
hdfs dfs -put ‘/home/yu/data/1.txt’ '/data_deal #将本地数据导入HDFS,注意重复这一操作向该目录中导入多个数据源,创建表时会将这些数据源构造成为一个表,并且这些数据源了随时增减,
本地数据导入HDFS后就可以正式创建外部表了:
hive>>create external table data_deal
>>(ip string,body string) #此处结构一定要和导入hdfs中的文件结构对应
>>row format delimited fields terminated by '<--->'
>>loction '/data_deal';
2.删除表
drop table t1;
3.其他的hive基本操作
查看表的结构
desc t1
创建表后新加列
alter table t1 add columns(english int);
视图
视图是一张虚表,唯一的作用就是简化查询,和其他的无关