版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mrzhangjwei/article/details/66969321
Hive中的数据库和表 详细讲解文章
Hive操作数据库语句总结
一、Hive中的数据库(Database)和表(Table)
1. Hive在HDFS上的默认存储路径
HDFS是Hadoop分布式文件系统
Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse
2. Hive中的数据库(Database)
进入Hive命令行,执行show databases;
命令,可以列出hive中的所有数据库,默认有一个default数据库,进入Hive-Cli之后,即到default数据库下。
使用use databasename;
可以切换到某个数据库下,同mysql;
hive> show databases;
OK
default
lxw1234
usergroup_mdmp
userservice_mdmp
Time taken: 0.442 seconds, Fetched: 4 row(s)
hive> use lxw1234;
OK
Time taken: 0.023 seconds
hive>
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ... )];
比如,创建名为zjwei的数据库:
CREATE DATABASE IF NOT EXISTS zjwei
COMMENT 'zjwei的Hive练习'
localtion 'hdfs://namenode/user/lxw1234/lxw1234.db/' ;
创建时候可以指定数据库在HDFS上的存储位置。
注意:使用HDFS超级用户创建数据库后,该数据库在HDFS上的存储路径的属主为超级用户,如果该数据库是为某个或者某些用户使用的,则需要修改路径属主,或者在Hive中进行授权。
修改数据库属性:
ALTER (DATABASE |SCHEMA ) database_name
SET DBPROPERTIES (property_name=property_value, …);
修改数据库属主:
ALTER (DATABASE |SCHEMA ) database_name
SET OWNER [USER |ROLE] user_or_role;
DROP (DATABASE |SCHEMA ) [IF EXISTS ] database_name
[RESTRICT |CASCADE ];
默认情况下,Hive不允许删除一个里面有表存在的数据库,如果想删除数据库,要么先将 数据库中的表全部删除,要么可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。RESTRICT关键字就是默认情 况,即如果有表存在,则不允许删除数据库。