Hive是Hadoop中一个类SQL的数据仓库。支持查询操作。

Hive Shell

hive -f file 命令可以运行脚本文件
hive -e “sql” 命令可以运行语句

创建表

内部表

create table test(r1 string, r2 string) ;
创建一个内部表时,hive会在hdfs上创建一个相应的表目录,该表目录位于hive配置文件中参数 ${hive.metastore.warehouse.dir} 指定的数据仓库目录下,所有的表数据(不包括外部表数据)都保存在这个目录中。如该参数默认值是 /user/hive/warehouse,则创建test表会创建hdfs目录/user/hive/warehouse/test

外部表

external 关键字可以让用户创建一个外部表,在建表的同时需要指定一个location,为已存在的hdfs目录。与Hive 创建内部表时会在hdfs上创建数据仓库表目录不同,创建外部表时不会创建表目录,而是直接使用指定的location作为表目录。这种方式下,在删除表的时候,只删除元数据,不删除实际数据。而内部表删除表时将所有数据均删除。此外,创建外部表的同时可以指定分隔符。

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE EXTERNAL TABLE `test`(
`r1` string,
`r2` string,
`r3` string,
`r4` string,
`r5` string)
PARTITIONED BY (
`dt` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION
'/home/work/mfcheer/test';

与传统数据库相比

不支持更新和删除操作

分区

通过分区可以增加数据分片的查询速度