在Hive中识别隔板表



是否有任何方法可以允许在Hive中列出分区表?我找到了可以在SQL Server中发生的方式。

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

我想在特定数据库下仅列出分区表,以便我不愿检查众多表的DDL,以查找表是分区还是非分区。Hive中有类似的功能吗?请建议。

您可以直接与Hive Metastore数据库连接,并获取有关分区的表的信息。需要了解以下信息,可能会根据您的群集配置进行更改:

  1. 数据库(例如PostgreSQL,MySQL等),其中配置了Hive Metastore将元数据存储在桌子上。
  2. 通常metastore是数据库名称,其中表信息存储在Hive Metastore数据库中。
  3. TBLS是存储蜂巢表信息的表。DBS是存储Hive数据库信息的表,PARTITIONS是hoch存储有关在Hive中分区的信息。
  4. DB_IDTBLS中的外键,TBL_IDPARTITIONSTBLS的外键。
  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);

相关内容

  • 没有找到相关文章

最新更新