当前位置: 代码迷 >> 综合 >> 生成Hive数据字典(一目了然,史上最全)
  详细解决方案

生成Hive数据字典(一目了然,史上最全)

热度:20   发布时间:2023-12-22 02:04:15.0

生产中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的逆向数据库到模型功能查看