Hive_3. DDL -- 数据库 & 内部表 & 外部表

本文介绍了Hive的数据定义语言,重点讲解了Hive数据库的概念和管理,包括如何创建、删除数据库,以及SHOW和DESCRIBE命令的用法。此外,文章详细阐述了内部表和外部表的区别,创建和管理过程,并提到了数据整合的命令,如CONCATENATE用于RCFile和ORCFile的优化。
摘要由CSDN通过智能技术生成

Hive 数据定义语言

Hive Data Definition Language  ( DDL ) 是 Hive SQL 语句的的一个子集,它通过 creating, deleting, or altering  模式对象(数据库,表,分区,视图,Buckets)来描述Hive的数据结构。大部分的 DDL 关键词为CREATEDROP 或者 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 会在删除数据库之前自动删除数据库中的表。

使用 CASCADE 来删除数据库:级联删除数据库(当数据库还有表时,级联删除表后在删除数据库),默认是restrict
默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后面加上关键字CASCADE,这样可以使Hive自行先删除数据库中的表
jdbc:hive2://> DROP DATABASE IF EXISTS myhivebook CASCADE;
从 Hive 0.13.0 开始,你可以通过 ALTER DATABASE 语句来更改表的属性和Roles -- 键值对属性。数据库元数据信息如数据库名和数据库所在的目录位置不能被修改:
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 关键词一起使用来提供更加详细的信息。

Hive 表: 内部表和外部表

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值