Hive 数据定义语言
Hive Data Definition Language
(
DDL
) 是 Hive SQL 语句的的一个子集,它通过 creating, deleting, or altering 模式对象(数据库,表,分区,视图,Buckets)来描述Hive的数据结构。大部分的 DDL 关键词为
CREATE
, DROP
或者
ALTER
., Hive DDL 的语法类似于 SQL,所以对有数据库基础的人员看起来会异常亲切。
Hive 数据库
Hive 中的数据库用来描述相同目的的表集合或者在相同目录下的一组文件。如果为指定数据库,则会使用默认数据库。创建一个新数据库时,Hive 会在 /user/hive/warehouse
路径下为每一张表创建一个目录,可以通过 hive.metastore.warehouse.dir 参数进行配置。
例如:数据库myhivebook
坐落于/user/hive/datawarehouse/myhivebook.db。但是默认数据库不存在目录。以下是 Hive 数据库的核心 DDL:
创建数据库(不检查数据库是否已经存在) :
在创建数据库的时候检查是否已经存在 :
创建数据库的时候提供:位置,注释和元数据信息:
使用通配符来显示和描述数据库 :
jdbc:hive2://> CREATE DATABASE myhivebook;
jdbc:hive2://> CREATE DATABASE IF NOT EXISTS myhivebook;
jdbc:hive2://> CREATE DATABASE IF NOT EXISTS myhivebook
. . . . . . .> COMMENT 'hive database demo'
. . . . . . .> LOCATION '/hdfs/directory'
. . . . . . .> WITH DBPROPERTIES ('creator'='dayongd','date'='2015-01-01'); --数据库键值对属性信息
jdbc:hive2://> SHOW DATABASES;
+----------------+
| database_name |
+----------------+
| default |
+----------------+
1 row selected (1.7 seconds)
jdbc:hive2://> SHOW DATABASES LIKE 'my.*';
jdbc:hive2://> DESCRIBE DATABASE default;
+-------+----------------------+-----------------------------+
|db_name| comment | location |
+-------+----------------------+-----------------------------+
|default|Default Hive database |hdfs://localhost:8020/user/hive/warehouse|
+-------+----------------------+-----------------------------+
1 row selected (1.352 seconds)
jdbc:hive2://> USE myhivebook;
jdbc:hive2://> DROP DATABASE IF EXISTS myhivebook;
IF EXISTS子句是可选的,如果加了这个子句,就可以避免因数据库myhivebook不存在而抛出警告信息
Note
需要注意的是,Hive 以目录的形式来存储数据库和表。如果你希望删除父目录,你需要首先删除子目录。
默认情况下,非空的数据库是不允许删除的。除非指定 CASCADE
。CASCADE
会在删除数据库之前自动删除数据库中的表。
默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后面加上关键字CASCADE,这样可以使Hive自行先删除数据库中的表
jdbc:hive2://> DROP DATABASE IF EXISTS myhivebook CASCADE;
jdbc:hive2://> ALTER DATABASE myhivebook
. . . . . . .> SET DBPROPERTIES ('edited-by' = 'Dayong');
jdbc:hive2://> ALTER DATABASE myhivebook
SET OWNER user dayongd;
Note:SHOW 和 DESCRIBE
Hive 中 SHOW
和 DESCRIBE
关键词用来表示Hive 中大部分对象的定义:表,分区..
SHOW
语句支持广泛的 Hive 对象,例如表,表分区,表 DDL,索引,分区,字段,函数,锁,roles,配置,事务和 compactions - 压缩/紧凑。
DESCRIBE
语句支持很少的 HIve对象,例如数据库,表,视图,字段,分区。然而,DESCRIBE
语句可以跟 EXTENDED
或者 FORMATTED
关键词一起使用来提供更加详细的信息。