如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区
1. 问题背景
有时我们需要获取特定 HIVE 库下所有分区表,或者所有分区表的所有分区,以便执行进一步的操作,比如通过 使用 HIVE 命令 MSCK REPAIR TABLE table_name sync partitions 修复 HIVE 元数据与 HDFS 数据在分区上的不一致性。
怎么获取这些 hms 元数据呢?
2. 获取 HMS 元数据的方案概述
获取 HMS 元数据,大体有以下几种方案:
2.1 执行 hive sql 命令,并基于 hive sql 的返回结果,解析获取 hms元数据
相关的 hive sql 命令有:
show databases;
show tables;
show tables like table_name_regexp;
show create table xxx;
DESCRIBE DATABASE EXTENDED db_name;
DESCRIBE EXTENDED|FORMATTED db_name.table_name;
DESCRIBE EXTENDED|FORMATTED db_name.table_name PARTITION partition_spec;
2.2 查询 hive 库对应的 hdfs 目录的结构信息,并基于这些结构信息,解析获取 hms 元数据
- hdfs 目录的结构信息,包括子目录和文件名等信息,解析这些信息可以获取 HIVE 库名,表名,分区名,分区值等 hms 元数据信息。
- 比如如果某个库中,所有分区表