生产中Hive的元数据存储在MySQL中,构建数据字典我们可以通过查询元数据表,导出查询结果后生成自己想要的文档。
下面我会一步一步介绍如何生成markdown格式的数据字典文档。
定义SQL
首先废话不多说,贴出我们需要的在MySQL中使用的SQL。
SELECT
a. NAME as SCHEMA_NAME,-- 数据库名称
t.TBL_NAME as TABLE_NAME,-- 表名
b.PARAM_VALUE as TABLE_COMMENT,-- 表注释
e.INTEGER_IDX as COLUMN_ID,-- 字段序号
e.COLUMN_NAME ,-- 字段名
e.TYPE_NAME as COLUMN_DATA_TYPE,-- 字段类型
f.PART_KEYS as PART_COLUMN,-- 分区字段
e.COMMENT-- 字段注释
FROM
TBLS t
JOIN DBS a ON t.DB_ID = a.DB_ID
LEFT JOIN (select TBL_ID,PARAM_VALUE FROM TABLE_PARAMS where PARAM_KEY='comment') b ON t.TBL_ID = b.TBL_ID
LEFT JOIN SDS c ON t.SD_ID = c.SD_ID
LEFT JOIN CDS d ON c.CD_ID = d.CD_ID
LEFT JOIN COLUMNS_V2 e ON d.CD_ID = e.CD_ID
LEFT JOIN (SELECT TBL_ID,GROUP_CONCAT(PKEY_NAME) AS PART_KEYS FROM PARTITION_KEYS GROUP BY TBL_ID) f on t.TBL_ID = f.TBL_ID
// where a. NAME = 'hive库名' 此处选择你需要的库
order by 1,2,4
TBLS表存储Hive表信息
DBS表存储Hive库信息
TABLE_PARAMS表存储Hive表的一些参数信息
COLUMNS_V2表存储Hive表的字段信息
PARTITION_KEYS表存储表的分区字段
至于这些表为什么这么关联,大家可以使用Navicat的逆向数据库到模型功能查看