Hive 数据抽象及数据库操作

DDL    Data Definition Language

1)数据抽象

    

2)数据库操作

     数据库:包含一系列的表,是对应HDFS上的一个文件夹,默认是/user/hive/warehouse

    1. 创建数据库

        CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
            [COMMENT database_comment]
            [LOCATION hdfs_path]  
            [WITH DBPROPERTIES (property_name=property_value, ...)];

    例:

        ① CREATE DATABASE ruoze_hive;    // 对应HDFS目录:/user/hive/warehouse/ruoze_hive.db
        ② CREATE DATABASE IF NOT EXISTS ruoze_hive;    // 数据库存在就忽略
        ③ CREATE DATABASE ruoze_hive2 LOCATION "/ruoze_hive2";        
        ④ CREATE DATABASE IF NOT EXISTS ruoze_hive3 
            COMMENT "it is my database"
            WITH DBPROPERTIES ("creator"="ruoze", "date"="2018-02-08");    //有属性描述的db

    2. 修改数据库 

        ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=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 ruoze_hive3 SET DBPROPERTIES ("update"="J");    //更改属性


    3. 删除数据库

        DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];  

    例:

        ① DROP DATABASE ruoze_hive2; 

            异常:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.

                   InvalidOperationException(message:Database ruoze_hive2 is not empty. One or more tables exist.)

            解决:--删除数据库下的表

                      --CASCADE可以级联删,但是生产禁止使用!!!从删库到跑路


3)meta信息说明

    1)DBS    数据库DB的总表。包括DB_ID, DESC, DB_LOCATION_URI, NAME 等

    2)TBLS    表信息

    3)DATABASE_PARAMS    数据库属性总表,键值对存在。包括DB_ID, PARAM_KEY. PARAM_VALUE

    4)TABLE_PARAMS    表参数信息


猜你喜欢

转载自blog.csdn.net/qq_30130043/article/details/80470384
今日推荐