ハイブにパーティションテーブルのリストを表示する方法はありますか? これはSQL Serverでこれを可能にする方法を発見しました。ハイブでパーティションテーブルを識別する
私は表がパーティション化または非パーティション化されているかどうかを見つけるために、多数のテーブルのDDLを確認するために取得しないように、特定のデータベースの下でのみパーティション表をリストしたいです。 Hiveに類似の機能はありますか?提案してください。
ハイブにパーティションテーブルのリストを表示する方法はありますか? これはSQL Serverでこれを可能にする方法を発見しました。ハイブでパーティションテーブルを識別する
私は表がパーティション化または非パーティション化されているかどうかを見つけるために、多数のテーブルのDDLを確認するために取得しないように、特定のデータベースの下でのみパーティション表をリストしたいです。 Hiveに類似の機能はありますか?提案してください。
ハイブメタストアデータベースに直接接続し、パーティション化されたテーブルに関する情報を取得できます。 は、お使いのクラスタ構成に応じて変更される可能性があり、以下の情報を知っておく必要があります。
metastore
は、ハイブメタストアデータベースにテーブル情報が格納されるデータベース名です。TBLS
は、ハイブテーブル情報を格納するテーブルです。 DBS
は、ハイブデータベース情報を格納するテーブルであり、PARTITIONS
は、ハイブでパーティション化に関する情報をwhochテーブルに格納したテーブルです。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接続のセットアップが必要です。 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);