在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。
要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。
连接上mysql后可以看到hive元数据对应的表约有20个,其中和表结构信息有关的有9张,其余的10多张或为空,或只有简单的几条记录,以下是部分主要表的简要说明。
表名
说明
关联键
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表分区名(键值)<