一、数据库操作语句
操作内容 | 操作语句 | 说明 |
---|---|---|
创建1 | create database my_hive; | HDFS上的默认存储路径是/user/hive/warehouse/*.db |
创建2 | create database if not exists my_hive; | 避免该库已存在导致建库报错 |
创建3 | create database my_hive location ‘/settment.db’; | 指定创建数据库在HDFS的位置 |
查看1 | show databases; | |
查看2 | show databases like ‘my*’; | |
显示1 | desc database my_hive; | |
显示2 | desc database extended my_hive; | 显示详细信息 |
切换数据库 | use my_hive; | |
修改属性 | alter database my_hive set dbproperties(‘createtime’=‘20200807’); | |
删除1 | drop database my_hive; drop database if exists my_hive; | 删除空数据库 |
删除2 | drop database my_hive cascade; | 强制删除非空数据库 |
二、表操作语句
1、建表
(1)建表语句举例:
(2)关键字解释:
- CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;可以用 IF NOT EXISTS 选项来忽略这个异常。
- EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)。
- COMMENT可以为表和列添加注释。
- PARTITIONED BY创建分区表。
- CLUSTERED BY创建分桶表。
- SORTED BY确定文件存储为如txt或其他格式。
- ROW FORMAT DELIMITED FIELDS TERMINATED BY char使列按指定字符分隔。
- COLLECTION ITEMS TERMINATED BY char指定集合分隔符。
- MAP KEYS TERMINATED BY char指定MAP中键与值的分隔符。
- LINES TERMINATED BY char指定行分隔符。
- | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, …)]
用户在建表的时候可以自定义SerDe或者使用自带的SerDe。如果没有指定ROW FORMAT 或者ROW FORMAT DELIMITED,将会使用自带的SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的SerDe,Hive通过SerDe确定表的具体的列的数据。
SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化。
(8)STORED AS指定存储文件类型
常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)
如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
(9)LOCATION :指定表在HDFS上的存储位置。
(10)LIKE允许用户复制现有的表结构,但是不复制数据。
Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。