一、Hive数据存储
1、底层数据
2、元数据
二、Hive相关元数据表
1、Hive版本表
(1) version表
字段 | 含义 |
---|
VER_ID | id主键 |
SCHEMA_VERSION | Hive 版本 |
VERSION_COMMENT | 版本说明 |
2、数据库表
(1) DBS表
字段 | 含义 |
---|
DB_ID | 数据库ID |
DESC | 数据库描述 |
DB_LOCATION_URI | 数据库HDFS路径 |
NAME | Hive数据库名 |
OWNER_NAME | Hive数据库所有者用户名 |
OWNER_TYPE | Hive所有者角色 |
3、表和视图表
(1) TBLS表
字段 | 含义 |
---|
TBL_ID | 表ID |
CREATE_TIME | 创建时间 |
DB_ID | 数据库ID |
LAST_ACCESS_TIME | 上次访问时间 |
OWNER | 所有者 |
RETENTION | 保留字段 |
SD_ID | 序列化配置信息 |
TBL_NAME | 表名 |
TBL_TYPE | 表类型 |
VIEW_EXPANDED_TEXT | 视图的详细HQL |
VIEW_ORIGINAL_TEXT | 视图的原始HQL |
(2) TTABLE_PARAMS表
字段 | 含义 |
---|
TBL_ID | 表ID |
PARAM_KEY | 表属性名 |
PARAM_VALUE | 表属性值 |
4、文件存储表
(1) SDS表
字段 | 含义 |
---|
SD_ID | 存储信息ID |
CD_ID | 字段信息ID |
INPUT_FORMAT | 文件输入格式 |
IS_COMPRESSED | 是否压缩 |
IS_STOREDASSUBDIRECTORIES | 是否以子目录存储 |
LOCATION | HDFS路径 |
NUM_BUCKETS | 分桶 |
OUTPUT_FORMAT | 文件输出格式 |
SERDE_ID | 序列化类ID |
(2) SERDES表
字段 | 含义 |
---|
SERDE_ID | 序列化类配置ID |
NAME | 序列化类别名 |
SLIB | 序列化类 |
(3) SERDE_PARAMS表
字段 | 含义 |
---|
SERDE_ID | 序列化类配置ID |
PARAM_KEY | 属性名 |
PARAM_VALUE | 属性值 |
5、字段表
(1) COLUMNS_V2表
字段 | 含义 |
---|
CD_ID | 字段信息ID |
COMMENT | 字段注释 |
COLUMN_NAME | 字段名 |
TYPE_NAME | 字段类型 |
INTEGER_IDX | 字段顺序 |
6、分区表
(1) PARTITIONS表
字段 | 含义 |
---|
PART_ID | 分区ID |
CREATE_TIME | 分区创建时间 |
LAST_ACCESS_TIME | 最后一次访问时间 |
PART_NAME | 分区名 |
SD_ID | 分区存储ID |
TBL_ID | 表ID |
(2) PARTITION_KEYS表
字段 | 含义 |
---|
TBL_ID | 表ID |
PKEY_COMMENT | 分区字段名说明 |
PKEY_NAME | 分区字段名 |
PKEY_TYPE | 分区字段类型 |
INTEGER_IDX | 分区字段顺序 |
(3) PARTITION_KEY_VALS表
字段 | 含义 |
---|
PART_ID | 分区ID |
PART_KEY_VAL | 分区字段值 |
INTEGER_IDX | 分区字段顺序 |
(4) PARTITION_PARAMS表
字段 | 含义 |
---|
PART_ID | 分区ID |
PARAM_KEY | 分区属性名 |
PARAM_VALUE | 分区属性值 |
三、应用
1、根据传入的tablename删除元数据所有信息
(1) 存储过程:
存储过程名字为t1,输入为tbl_id
DELIMITER //
drop procedure if exists t1;
create procedure t1 ( in tbinput int)
begin
declare v_sd_id int ;
declare v_part_id int ;
declare v_cd_id int ;
declare v_serde_id int ;
select tbinput;
select SD_ID into v_sd_id from tbls where TBL_ID = tbinput;
select part_id into v_part_id from partitions where tbl_id = tbinput;
select cd_id , serde_id into v_cd_id,v_serde_id from sds where sd_id = v_sd_id;
select v_sd_id,v_part_id,v_cd_id,v_serde_id;
if v_part_id is not null then
delete from partition_params where part_id = v_part_id;
delete from partition_key_vals where part_id = v_part_id;
end if;
delete from serdes where serde_id = v_serde_id;
delete from serde_params where serde_id = v_serde_id;
delete from columns_v2 where cd_id = v_cd_id;
delete from sds where sd_id = v_sd_id;
delete from partitions where tbl_id = tbinput;
delete from partition_keys where tbl_id = tbinput;
delete from table_params where tbl_id = tbinput;
delete from tbls where tbl_id = tbinput;
end ;
//
delimiter ;
mysql> call t1(tbl_id);
(2) shell封装:
hive_mysql_delete.sh
#!/bin/bash
source /usr/local/mysql/.bash_profile
mysql -uroot -p密码 hive数据库 -e "
SET FOREIGN_KEY_CHECKS = 0;
call t1(tbl_id);
SET FOREIGN_KEY_CHECKS = 1;
quit" >> /tmp/mysql_delete.log
作者:YBCarry_段松啓
链接:https://juejin.cn/post/7009329042746769415
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
打开App,阅读手记