主要表
表名 | 说明 | 关联键 |
---|---|---|
TBLS | 所有hive表的基本信息 | TBL_ID,SD_ID |
TABLE_PARAM | 表级属性,如是否外部表,表注释等 | TBL_ID |
COLUMNS | Hive表字段信息(字段注释,字段名,字段类型,字段序号) | SD_ID |
SDS | 所有hive表、表分区所对应的hdfs数据目录和数据格式 | SD_ID,SERDE_ID |
SERDE_PARAM | 序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等 | SERDE_ID |
PARTITIONS | Hive表分区信息 | PART_ID,SD_ID,TBL_ID |
PARTITION_KEYS | Hive分区表分区键 | TBL_ID |
PARTITION_KEY_VALS | Hive表分区名(键值) | PART_ID |
从上面表的内容来看,hive整个创建表的过程已经比较清楚了。
(1)解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象
(2)根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同通过DAO方法写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。
表介绍
1、SEQUENCE_TABLE
对于db、tbl、sds等的SEQUENCE_id ,每次新增的时候 Next_Val
2、DBS
存储hive的DB信息,包括描述信息、存储路径、数据库名、拥有者和角色名
3、DATABASE_PARAMS
db的key-value参数 ,不清楚用途。
###4、SDS
提供文件路径location、InputFormat、OutputFormat、是否压缩、是否是子文件夹存储、SerDe类(对应于SERDES表)。
SerDe类表示各种序列化和反序列化的类。
5、SD_PARAMS
每个SDS的key-value参数
6、SERDES
每个SDS对应的存储的SerDer类,每个SDS记录一个SERDES表的记录
7、SERDE_PARAMS
SERDE的一些参数,主要是行分隔符、列分隔符、NULL字符串等等,可以每个SerDer自己定义
8、CDS
暂时没明白到底是什么,不过其id和tbl_id是一致的,貌似就是tbl_id
9、TBLS
table的具体信息。
Tabid、创建时间、数据库id、last_access、owner(这个后面会和权限控制有关)、表的存储位置id、表名、TBL_TYPE(外部表、内部表)等
10、TABLE_PARAMS
table级别的key-value参数
主要是总文件个数、总文件大小、comment、last_ddl_time(上次执行ddl的时间)、以及用户自定义的一些参数(orcfile中的参数)
11、COLUMNS_V2
列的信息
CD_ID对应的应该是tbl_id
12、PARTITION_KEYS
每个表的partitions 列
13、PARTITIONS
Partitions id 、create_time、part_name、sds_id、tbl_id
14、PARTITION_KEY_VALS
和上面的表对应,每个partitions对应的具体值
15、PARTITION_PARAMS
分区参数,暂时为找到怎么设置每个分区的key-value参数
16、PART_COL_STATS
对于每列的统计信息,在0.11以后增加了
ANALYZE table contline_revenue_day PARTITION(pdate='2014-03-09') compute statistics for COLUMNS contract_line_id , st_date ,contract_no ;
这样的ddl命令来用于统计每个分区的基本统计信息,用于优化
17. 未用到的空表
BUCKETING_COLS :
IDXS
INDEX_PARAMS
SKEWED_COL_NAMES
SKEWED_COL_VALUE_LOC_MAP
SKEWED_STRING_LIST
SKEWED_STRING_LIST_VALUES
SKEWED_VALUES
SORT_COLS
VERSION