Hive基本操作——Database
目录
- 1.创建数据库 Create Database
- 2.删除数据库 Drop Database
- 3.修改数据库 Alter Database
- 4. 使用数据库 Use Database
- 5.其他常用操作
1.创建数据库 Create Database
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];
-
使用DATABASE|SCHEMA意思一样
-
COMMENT给数据库添加注释
-
LOCATION指定数据库在HDFS上的存储位置
-
DBPROPERTIES给数据库添加键值对描述信息
补充:
-
default数据库在HDFS上默认存储在/user/hive/warehouse,见hive的默认配置文件(hive-default.xml.template)
hive.metastore.warehouse.dir /user/hive/warehouse location of default database for the warehouse -
HDFS上的路径/user/hive/warehouse需要手动创建,并修改他们的同组权限可写
bin/hadoop fs -mkdir -p /user/hive/warehouse bin/hadoop fs -chmod g+w /user/hive/warehouse -
hive数据库所在目录位于
${hive.metastore.warehouse.dir}下- hive会为每个数据库创建一个文件夹(例:
/user/hive/warehouse/rxy.db),数据库中的表以数据库的子目录形式存储。 - hive没有为默认的数据库default创建文件夹,如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹。
- hive会为每个数据库创建一个文件夹(例:
-
改变default数据仓库原始位置,创建hive-site.xml文件,重新指定hive.metastore.warehouse.dir的位置。
hive.metastore.warehouse.dir new_location
-
2.删除数据库 Drop Database
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
-
删除数据库时候,默认是RESTRICT的,Hive是不允许用户删除一个包含表的数据库。即如果数据库中有表,
drop database_name会报错,要先将数据库中的表清空才能删除。hive> drop database rxy; Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database rxy is not empty. One or more tables exist.) -
在删除命令的最后面加上关键字CASCADE,可以使Hive先自行删除数据库中的表。
hive> drop database rxy cascade; No rows affected (4.145 seconds)
3.修改数据库 Alter Database
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); -- (Note: SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
-
ALTER DATABASE ... SET DBPROPERTIES为数据库的dbproperties设置键值对属性值,来描述数据库属性信息。 -
ALTER DATABASE ... SET LOCATION不会将当前目录的内容移动到新指定的位置,在增加新表时候会将新表存在这个指定目录下。The ALTER DATABASE … SET LOCATION statement does not move the contents of the database’s current directory to the newly specified location. It does not change the locations associated with any tables/partitions under the specified database. It only changes the default parent-directory where new tables will be added for this database. This behaviour is analogous to how changing a table-directory does not move existing partitions to a different location.
No other metadata about a database can be changed.
-
数据库其他的元数据信息都不可以改变。
4. 使用数据库 Use Database
USE database_name;
USE DEFAULT;
- 使用指定数据库
USE database_name - 使用默认数据库
USE DEFAULT
5.其他常用操作
- 查看当前正在使用的数据库
SELECT current_database() - 查看所有数据库
show databases - 用正则表达式过滤查询的数据库
show databases like '*rxy*' - 显示数据库的信息
desc database rxy - 显示数据库详细信息
desc database extended rxy
参考资料:
- LanguageManual DDL
- HiveQL之Database相关操作
- hive编程指南
欢迎大家交流指正
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
