Hive使用(一)
前言
之前写过Hive的安装,学习到了今天Hive的使用也有了一些的经验,Hive的基本命令与MySQL和SqlServer基本相似,都是建表建库那一套.但是Hive作为Hadoop的组件之一,肯定是有它特殊的意义,Hive在进行一些查询操作时,走的是MapReduce的流程,而Hive的底层封装了许多的MapReduce代码,用于减少使用人员学习MapReduce的学习成本,在熟悉hive的使用后,可以减少在学习MapReduce上的时间,但是作为Hadoop的三大组件之一的MapReduce也是要明白它的使用的.
DDL数据定义
create database 想创建的数据库名称; |
建库命令与数据库的语言基本一致,
但是为了避免出现要创建的数据库已经存在错误,可以加入if not exists判断
create database if not exists 想创建的数据库名称 ; |
同时在Hive创建的数据库是存放在HDFS上的,也可以自己指定在HDFS上的存放位置
create database 数据库名称 location 'hdfs上的位置'; |
查询数据库
显示数据库
hive> show databases; |
即可查询到所有的数据库
过滤显示查询的数据库
show databases like '要查询的数据库名称'; |
查看数据库详情
hive> desc database 想要查看详情的数据库名称; |
如图
数据库详情包括数据库存放地址,数据库类型
如果还想看更详细的可以加上extended
hive> desc database extended 想要查看详情的数据库名称; |
如图
切换当前数据库
使用use命令切换数据库
hive (default)> use default; |
修改数据库
修改hive的数据库,用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。
hive (default)> alter database db_hive set |
删除数据库
hive>drop database 要删除的数据库名称; |
如果删除的数据库不存在,最好采用 if exists判断数据库是否存在
hive> drop database 删除的数据库(不存在); |
加上了if exists就不会报错
如果数据库不为空,可以采用cascade命令,强制删除
hive> drop database 数据库名称(数据库不为空); |
建表命令
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name |
建表字段解释说明
(1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
(2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
(3)COMMENT:为表和列添加注释。
(4)PARTITIONED BY创建分区表
(5)CLUSTERED BY创建分桶表
(6)SORTED BY不常用
(7)ROW FORMAT
DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [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的表分为两种:一为外部表,二为内部表.内外表之间可以相互转换
默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive会(或多或少地)控制着数据的生命周期。Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。 当我们删除一个管理表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。
建表语句内容太多,一篇博客是写不下的,所以目前先告一段落,请大家等待下次的更新,感谢大家的阅读.