栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过hive元数据表获取hive分区表的相关信息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过hive元数据表获取hive分区表的相关信息

通过hive元数据表获取hive分区表的相关信息

问题:项目中需要获取hive所有分区表的分区信息并显示到页面
如图:

解决方案:通过JDBC连接hive源数据库,sql语句实现

编写sql语句:

SELECt main.*,b.numRows,b.totalSize FROM (
	SELECt main.TBL_ID AS metaObjectId
		,main.TBL_NAME AS tabName
		,b.PART_ID AS partId
		,b.PART_NAME AS partitionName
		,b.CREATE_TIME AS createTime
		,b.LAST_ACCESS_TIME AS updateTime
	FROM TBLS main
	INNER JOIN PARTITIONS b ON main.TBL_ID = b.TBL_ID
	WHERe b.PART_NAME IS NOT NULL
) main
LEFT JOIN
(
SELECt PART_ID AS partId,
MAX(CASE PARAM_KEY WHEN 'numRows' THEN PARAM_VALUE ELSE 0 END) AS numRows,
MAX(CASE PARAM_KEY WHEN 'totalSize' THEN PARAM_VALUE ELSE 0 END) AS totalSize
FROM PARTITION_PARAMS
GROUP BY PART_ID
) b ON main.partId=b.partId;

最终结果如下:

剩下的就是java实现连接mysql执行语句并封装结果给前端了,比较简单,不写了

重点:对应hive分区的几个比较重要的元数据表

TBLS:hive所有表的基础信息,包括id,表名,等等
PARTITIONS:跟分区有关的表, 包括分区id,创建时间,分区表名,以及TBLS主表关联id等等
PARTITION_PARAMS:分区表比较重要的一些数据
主要字段:
numfiles:该分区下的文件数,
numRows:该分区下记录数,
rawDataSize是指原始数据的大小,
totalSize是指占用HDFS存储空间大小,
transient_lastDdlTime最后一次ddl时间

对于非分区的表可以看这篇文章:
Hive通过元数据库获取表的数据量,占用空间

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333160.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号