【Hive】公司数据仓库字典/元数据库应用案例

文章目录

  • ⌘ 常用SQL查询应用案例:
    • -- 数据仓库表结构字典表
    • -- 数据仓库授权信息字典表
    • -- 通过字段名注释找表名
    • -- 根据表注释找表
    • -- 查询指定库中的分区表
    • -- 查询指定库中某种存储类型的分区表
  • ⌘ 元数据库常用表说明
    • -- DBS
    • -- TBLS
    • -- TABLE_PARAMS
    • -- TBL_PRIVS
    • -- COLUMNS_V2
    • -- SDS
    • -- SD_PARAMS:
    • -- PARTITIONS
    • -- PARTITION_KEYS
    • -- PARTITION_PARAMS
    • -- VERSION

⌘ 常用SQL查询应用案例:

常用表的ER图如下:
在这里插入图片描述

– 数据仓库表结构字典表

SELECT DBS.NAME                              -- 数据库名, TBLS.TBL_NAME                         -- 表名, COMM.PARAM_VALUE                      -- 表注释, COLUMNS_V2.COLUMN_NAME                -- 字段名, COLUMNS_V2.COMMENT                    -- 字段注释, TBLS.OWNER                            -- 表的拥有者, TBL_PRIVS.CREATE_TIME                 -- 被授权时间, TBL_PRIVS.PRINCIPAL_NAME              -- 被授权用户, TBLS.CREATE_TIME AS TABLE_CREATE_TIME -- 表创建时间, TBLS.LAST_ACCESS_TIME                 -- 最近一次访问时间
FROM TBLSJOIN DBS ON TBLS.DB_ID = DBS.DB_IDJOIN SDS ON TBLS.SD_ID = SDS.SD_IDJOIN CDS ON SDS.CD_ID = CDS.CD_IDJOIN TBL_PRIVS ON TBLS.TBL_ID = TBL_PRIVS.TBL_IDJOIN COLUMNS_V2 ON CDS.CD_ID = COLUMNS_V2.CD_IDLEFT JOIN (SELECT TBL_ID, PARAM_VALUEFROM TABLE_PARAMSWHERE PARAM_KEY = 'COMMENT'
) COMM ON (COMM.TBL_ID = TBLS.TBL_ID)

– 数据仓库授权信息字典表

mysql -h {IP} -P 3306 -D hive2 -u{用户名} -p{密码} --default-character-set=utf8 -e "
SELECT DBS.NAME as '数据库名'
, TBLS.TBL_NAME as '数据库名'
, COMM.PARAM_VALUE as '表注释'
, FROM_UNIXTIME(TBLS.CREATE_TIME,'%Y-%m-%d') as '表创建时间'
, TBLS.OWNER as '表的拥有者'
, FROM_UNIXTIME(TBL_PRIVS.CREATE_TIME,'%Y-%m-%d')   as '表被授权时间'
, TBL_PRIVS.PRINCIPAL_NAME as '被授权用户'
, TBLS.LAST_ACCESS_TIME as '最近一次访问时间'
FROM TBLS
JOIN DBS ON TBLS.DB_ID = DBS.DB_ID
JOIN SDS ON TBLS.SD_ID = SDS.SD_ID
JOIN CDS ON SDS.CD_ID = CDS.CD_ID
JOIN TBL_PRIVS ON TBLS.TBL_ID = TBL_PRIVS.TBL_ID
LEFT JOIN ( SELECT TBL_ID , PARAM_VALUE FROM TABLE_PARAMS WHERE PARAM_KEY = 'comment') COMM
ON (COMM.TBL_ID = TBLS.TBL_ID)
WHERE TBLS.OWNER = 'prd_dw' --prd_dw 为hive表的属主用户
--- AND TBLS.TBL_NAME like '%表名%'  -- 查某个单表的历史授权信息
AND TBLS.OWNER <> TBL_PRIVS.PRINCIPAL_NAME
ORDER BY DBS.NAME,TBLS.TBL_NAME
" >> /wls/dw/tmp/Helz/table.csv

– 通过字段名注释找表名

select d.NAME,a.TBL_NAME,e.PARAM_VALUE,c.COLUMN_NAME,c.TYPE_NAME,c.COMMENT,c.INTEGER_IDX from TBLS a
join SDS b
on (a.SD_ID=b.SD_ID)
join
(select * from COLUMNS_V2 where comment like '%i%') c
ON (c.CD_ID=b.CD_ID)
join
DBS d
on (a.DB_ID=d.DB_ID)
join
(select TBL_ID,PARAM_VALUE from TABLE_PARAMS where PARAM_KEY='comment') e
on (a.TBL_ID=e.TBL_ID) where d.NAME IN ('dw_mdl','dw_idl')
order by TBL_NAME,INTEGER_IDX

– 根据表注释找表

select d.NAME, a.TBL_NAME, b.PARAM_VALUE
from TBLS ajoin(select TBL_ID, PARAM_VALUEfrom TABLE_PARAMSwhere PARAM_KEY = 'comment'and PARAM_VALUE like '%销售商%') bon (a.TBL_ID = b.TBL_ID)join DBS don (a.DB_ID = d.DB_ID)
where d.NAME = 'dw_idl'
order by a.TBL_NAME

– 查询指定库中的分区表

selectdb.NAME,tb.TBL_NAME,pk.PKEY_NAME 
from TBLS tb
join DBS db
join PARTITION_KEYS pk
where tb.DB_ID = db.DB_ID
and tb.TBL_ID=pk.TBL_ID
and db.NAME='dbname';

– 查询指定库中某种存储类型的分区表

selectdb.NAME,     tb.TBL_NAME,pk.PKEY_NAME,s.INPUT_FORMAT,s.OUTPUT_FORMAT
from TBLS tb
join DBS db
join PARTITION_KEYS pk
join SDS s
where tb.DB_ID = db.DB_ID
and tb.TBL_ID=pk.TBL_ID
and tb.SD_ID = s.SD_ID
and db.NAME='test'
and s.INPUT_FORMAT like '%TextInputFormat%';

⌘ 元数据库常用表说明


Hive数据库相关的元数据表,主要有DBS和DATABASE_PARAMS这两张表通过DB_ID字段关联。

– DBS

数据库信息表,表存储Hive中数据库的信息,主键是DB_ID,default 为系统自带的库,HDFS路径默认为/user/hive/warehouse。
在这里插入图片描述


Hive表和视图相关的元数据表,主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联
在这里插入图片描述

– TBLS

表/视图/索引表基本信息表
在这里插入图片描述

– TABLE_PARAMS

表/视图的属性信息表
在这里插入图片描述

– TBL_PRIVS

表/视图授权信息表,该表存储表/视图的授权信息

在这里插入图片描述


Hive表字段相关的元数据表

– COLUMNS_V2

表字段信息表,新增字段后可以通过改变字段顺序的值来改变表的字段顺序在这里插入图片描述


Hive文件存储信息相关的元数据表,主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS,由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。

– SDS

表文件存储信息表,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。
在这里插入图片描述

– SD_PARAMS:

该表存储Hive存储的属性信息,在创建表时候使用STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。
在这里插入图片描述


Hive表分分区相关的元数据表

– PARTITIONS

该表存储表分区的基本信息
在这里插入图片描述

– PARTITION_KEYS

该表存储分区的字段信息
在这里插入图片描述

– PARTITION_PARAMS

该表存储分区的属性信息
在这里插入图片描述

– VERSION

存储Hive版本的元数据表
在这里插入图片描述

mysql> select * from VERSION ;
+--------+----------------+----------------------------+
| VER_ID | SCHEMA_VERSION | VERSION_COMMENT            |
+--------+----------------+----------------------------+
|      1 | 3.1.0          | Hive release version 3.1.0 |
+--------+----------------+----------------------------+
1 row in set (0.00 sec)

此表存着Hive的版本信息,有且只有一条数据,修改这条数据会导致Hive不可用


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部