Hive元数据说明与应用
一、Hive数据存储
1、底层数据
底层数据存储在分布式存储(HDFS)中。
2、元数据
元数据信息维护在MetaStore。
Hive默认使用的元数据存储数据库是Derby,Derby不支持多个客户端同时访问,所以需要对Derby进行替换,一般常用MySQL替换Derby。
二、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//
dropprocedureifexistst1;
createproceduret1(intbinputint)
begin
declarev_sd_idint;
declarev_part_idint;
declarev_cd_idint;
declarev_serde_idint;
selecttbinput;
selectSD_IDintov_sd_idfromtblswhereTBL_ID=tbinput;
selectpart_idintov_part_idfrompartitionswheretbl_id=tbinput;
selectcd_id,serde_idintov_cd_id,v_serde_idfromsdswheresd_id=v_sd_id;
selectv_sd_id,v_part_id,v_cd_id,v_serde_id;
ifv_part_idisnotnullthen
deletefrompartition_paramswherepart_id=v_part_id;
deletefrompartition_key_valswherepart_id=v_part_id;
endif;
deletefromserdeswhereserde_id=v_serde_id;
deletefromserde_paramswhereserde_id=v_serde_id;
deletefromcolumns_v2wherecd_id=v_cd_id;
deletefromsdswheresd_id=v_sd_id;
deletefrompartitionswheretbl_id=tbinput;
deletefrompartition_keyswheretbl_id=tbinput;
deletefromtable_paramswheretbl_id=tbinput;
deletefromtblswheretbl_id=tbinput;
end;
//
delimiter;
mysql>callt1(tbl_id);
(2) shell封装:
hive_mysql_delete.sh
#!/bin/bash
source/usr/local/mysql/.bash_profile
mysql-uroot-p密码hive数据库-e"
SETFOREIGN_KEY_CHECKS=0;
callt1(tbl_id);
SETFOREIGN_KEY_CHECKS=1;
quit">>/tmp/mysql_delete.log
更多相关文章
- html5表单的required属性使用
- Python Django模型详解
- http请求不带referer的解决方法
- PHP mysql 新增时存在则修改,不存在则新增,
- VMWARE ESX SERVER虚拟化数据恢复过程总结
- Windows还原系统后分区合并为一个分区恢复方法
- MySQL DDL命令大全(数据定义语言)
- 完成一个用户注册页面,对表单字段进行验证(密码长度、密码一致、验
- 完成一个用户注册页面, 用xmind文件中总结的字符串函数库,对表单