3. Hive 的基本操作
###3.1 数据库操作
####3.1.1 创建数据库
create database if not exists myhive;
use myhive;
说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
####3.1.2 创建数据库并指定位置
create database myhive2 location '/myhive2';
####3.1.3 设置数据库键值对信息
数据库可以有一些描述性的键值对信息,在创建时添加:
create database foo with dbproperties ('owner'='itcast', 'date'='20190120');
查看数据库的键值对信息:
describe database extended foo;
修改数据库的键值对信息:
alter database foo set dbproperties ('owner'='itheima');
####3.1.4 查看数据库更多详细信息
desc database extended myhive2;
####3.1.5 删除数据库
删除一个空数据库,如果数据库下面有数据表,那么就会报错
drop database myhive2;
强制删除数据库,包含数据库下面的表一起删除
drop database myhive cascade;
3.2 数据库表操作
####3.2.1 创建表的语法:
create [external] table [if not exists] table_name (
col_name data_type [comment '字段描述信息']
col_name data_type [comment '字段描述信息'])
[comment '表的描述信息']
[partitioned by (col_name data_type,...)]
[clustered by (col_name,col_name,...)]
[sorted by (col_name [asc|desc],...) into num_buckets buckets]
[row format row_format]
[storted as ....]
[location '指定表的路径']
说明:
创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
表示注释,默认不能使用中文
表示使用表分区,一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下 .
-
clustered by
对于每一个表分文件, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是 针对某一列进行桶的组织。 -
指定排序字段和排序规则
指定表文件字段分隔符
-
storted as指定表文件的存储格式, 常用格式:SEQUENCEFILE, TEXTFILE, RCFILE,如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 storted as SEQUENCEFILE。
指定表文件的存储路径