Hive基本操作之Database

 

1.创建数据库 Create Database

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
  1. 使用DATABASE|SCHEMA意思一样

  2. COMMENT给数据库添加注释

  3. LOCATION指定数据库在HDFS上的存储位置

  4. DBPROPERTIES给数据库添加键值对描述信息

    补充:

    1. default数据库在HDFS上默认存储在/user/hive/warehouse,见hive的默认配置文件(hive-default.xml.template)

      <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/user/hive/warehouse</value>
          <description>location of default database for the warehouse</description>
      </property>
    2. HDFS上的路径/user/hive/warehouse需要手动创建,并修改他们的同组权限可写

      bin/hadoop fs -mkdir -p /user/hive/warehouse
      bin/hadoop fs -chmod g+w /user/hive/warehouse
    3. hive数据库所在目录位于${hive.metastore.warehouse.dir}

      • hive会为每个数据库创建一个文件夹(例:/user/hive/warehouse/rxy.db),数据库中的表以数据库的子目录形式存储。

      • hive没有为默认的数据库default创建文件夹,如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹。

    4. 改变default数据仓库原始位置,创建hive-site.xml文件,重新指定hive.metastore.warehouse.dir的位置。

      <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>new_location</value>
      </property>

 

2.删除数据库 Drop Database

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
  1. 删除数据库时候,默认是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.)
  2. 在删除命令的最后面加上关键字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)
  1. ALTER DATABASE ... SET DBPROPERTIES 为数据库的dbproperties设置键值对属性值,来描述数据库属性信息。

  2. ALTER DATABASE ... SET LOCATION 不会将当前目录的内容移动到新指定的位置,在增加新表时候会将新表存在这个指定目录下。

  3. 数据库其他的元数据信息都不可以改变。

 

4. 使用数据库 Use Database

USE database_name;
USE DEFAULT;
  1. 使用指定数据库 USE database_name

  2. 使用默认数据库 USE DEFAULT

 

5.其他常用操作

  1. 查看当前正在使用的数据库 SELECT current_database()

  2. 查看所有数据库 show databases

  3. 用正则表达式过滤查询的数据库 show databases like '*rxy*'

  4. 显示数据库的信息 desc database rxy

  5. 显示数据库详细信息 desc database extended rxy

 

参考资料:

  1. LanguageManual DDL

  2. HiveQL之Database相关操作

  3. hive编程指南

 

欢迎大家交流指正

 

posted @ 2020-04-23 16:28  蓝色的小白  阅读(659)  评论(0)    收藏  举报