[英]Identifying Partitioned tables in Hive
有什么方法可以在Hive中列出分區表? 我發現了允許這種情況在SQL Server中發生的方法。
我只想列出特定數據庫下的分區表,這樣我就不必檢查眾多表的DDL來查找該表是分區的還是未分區的。 Hive中是否有類似功能? 請提出建議。
您可以直接與hive metastore數據庫連接,並獲取有關已分區表的信息。 需要了解以下信息,可能會根據您的集群配置而變化:
metastore
是數據庫名稱,表信息存儲在該數據庫中的配置單元metastore數據庫中。 TBLS
是存儲配置單元表信息的表。 DBS
是存儲配置單元數據庫信息的表,而PARTITIONS
是存儲有關配置單元中分區信息的表。 DB_ID
是外鍵TBLS
和TBL_ID
是外鍵TBLS
在PARTITIONS
。 聯接如下表:
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.