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 表参数信息