繁体   English   中英

在Hive中识别分区表

[英]Identifying Partitioned tables in Hive

有什么方法可以在Hive中列出分区表? 我发现了允许这种情况在SQL Server中发生的方法。

https://dba.stackexchange.com/questions/14996/how-do-i-get-a-list-of-all-the-partitioned-tables-in-my-database

我只想列出特定数据库下的分区表,这样我就不必检查众多表的DDL来查找该表是分区的还是未分区的。 Hive中是否有类似功能? 请提出建议。

您可以直接与hive metastore数据库连接,并获取有关已分区表的信息。 需要了解以下信息,可能会根据您的集群配置而变化:

  1. 配置hive metastore的数据库(例如PostgreSQL,mysql等)用于存储有关表的元数据。
  2. 通常, metastore是数据库名称,表信息存储在该数据库中的配置单元metastore数据库中。
  3. TBLS是存储配置单元表信息的表。 DBS是存储配置单元数据库信息的表,而PARTITIONS是存储有关配置单元中分区信息的表。
  4. DB_ID是外键TBLSTBL_ID是外键TBLSPARTITIONS
  5. 联接如下表:

    select d."NAME" as DATABASE_NAME, t."TBL_NAME" as TABLE_NAME, p."PKEY_NAME" as PARTITION_KEY_NAME from "PARTITION" p join "TBLS" on p."TBL_ID"=t."TBL_ID" join "DBS" dat on t."DB_ID"=d."DB_ID" where d."NAME"="filterdbname" AND p."PKEY_NAME" is not null; 这是sql方法。 如果需要编程方法。 HiveMetaStoreClient API可用于查询metastore表。 需要设置Metastore连接。 在Java中,下面是伪代码,

    import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;

    HiveConf conf = new HiveConf(); hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, Address+":"+ Port); HiveMetaStoreClient hiveMetaStoreClient = new HiveMetaStoreClient(conf);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM