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, ...)];
  1. 使用DATABASE|SCHEMA意思一样

  2. COMMENT给数据库添加注释

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

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

    补充:

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

      hive.metastore.warehouse.dir/user/hive/warehouselocation of default database for the warehouse
      
      
    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的位置。

      hive.metastore.warehouse.dirnew_location
      
      

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 不会将当前目录的内容移动到新指定的位置,在增加新表时候会将新表存在这个指定目录下。

    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.

  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编程指南

欢迎大家交流指正


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部