查询 HIVE 元数据

Posted

技术标签:

【中文标题】查询 HIVE 元数据【英文标题】:Querying HIVE Metadata 【发布时间】:2018-06-28 20:39:35 【问题描述】:

我需要从我的 Apache HIVE 集群中查询下表并查看信息:

每一行需要包含以下内容:

表格架构

表格名称

表格说明

列名

列数据类型

列长度

列精度

列比例

空或非空

主键指标

这可以很容易地从大多数 RDBMS(元数据表/视图)中查询,但我很难找到有关 HIVE 中等效元数据表/视图的大量信息。

请帮忙:)

【问题讨论】:

***.com/questions/40302116/… 的可能副本 【参考方案1】:

此信息可从 Hive 元存储中获得。以下示例查询适用于 mysql 支持的元存储(Hive 版本 1.2)。

SELECT 
DBS.NAME AS TABLE_SCHEMA,
TBLS.TBL_NAME AS TABLE_NAME,
TBL_COMMENTS.TBL_COMMENT AS TABLE_DESCRIPTION,
COLUMNS_V2.COLUMN_NAME AS COLUMN_NAME,
COLUMNS_V2.TYPE_NAME AS COLUMN_DATA_TYPE_DETAILS
FROM DBS
JOIN TBLS ON DBS.DB_ID = TBLS.DB_ID
JOIN SDS ON TBLS.SD_ID = SDS.SD_ID
JOIN COLUMNS_V2 ON COLUMNS_V2.CD_ID = SDS.CD_ID
JOIN 
    (
        SELECT DISTINCT TBL_ID, TBL_COMMENT 
        FROM 
        (
            SELECT TBLS.TBL_ID TBL_ID, TABLE_PARAMS.PARAM_KEY, TABLE_PARAMS.PARAM_VALUE, CASE WHEN TABLE_PARAMS.PARAM_KEY = 'comment' THEN TABLE_PARAMS.PARAM_VALUE ELSE '' END TBL_COMMENT
            FROM TBLS JOIN TABLE_PARAMS
            ON TBLS.TBL_ID = TABLE_PARAMS.TBL_ID
        ) TBL_COMMENTS_INTERNAL
    ) TBL_COMMENTS 
ON TBLS.TBL_ID = TBL_COMMENTS.TBL_ID;

示例输出:

+--------------+----------------------+-----------------------+-------------------+------------------------------+
| TABLE_SCHEMA | TABLE_NAME           | TABLE_DESCRIPTION     | COLUMN_NAME       | COLUMN_DATA_TYPE_DETAILS     |
+--------------+----------------------+-----------------------+-------------------+------------------------------+
| default      | temp003              | This is temp003 table | col1              | string                       |
| default      | temp003              | This is temp003 table | col2              | array<string>                |
| default      | temp003              | This is temp003 table | col3              | array<string>                |
| default      | temp003              | This is temp003 table | col4              | int                          |
| default      | temp003              | This is temp003 table | col5              | decimal(10,2)                |
| default      | temp004              |                       | col11             | string                       |
| default      | temp004              |                       | col21             | array<string>                |
| default      | temp004              |                       | col31             | array<string>                |
| default      | temp004              |                       | col41             | int                          |
| default      | temp004              |                       | col51             | decimal(10,2)                |
+--------------+----------------------+-----------------------+-------------------+------------------------------+

查询中引用的元存储表:

DBS: Details of databases/schemas.
TBLS: Details of tables.
COLUMNS_V2: Details about columns.
SDS: Details about storage.
TABLE_PARAMS: Details about table parameters (key-value pairs)

【讨论】:

以上是关于查询 HIVE 元数据的主要内容,如果未能解决你的问题,请参考以下文章

Hive学习之路 Hive元数据信息对应MySQL数据库表

更新 HIVE 中的分区元数据

Hive 元数据库表信息

hive查询分区元数据,PARTITIONED BY

Hive 元数据服务 MetaStore

Hive 元数据服务 MetaStore