2017-12-26 12 views
0

ハイブにパーティションテーブルのリストを表示する方法はありますか? これはSQL Serverでこれを可能にする方法を発見しました。ハイブでパーティションテーブルを識別する

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

私は表がパーティション化または非パーティション化されているかどうかを見つけるために、多数のテーブルのDDLを確認するために取得しないように、特定のデータベースの下でのみパーティション表をリストしたいです。 Hiveに類似の機能はありますか?提案してください。

答えて

0

ハイブメタストアデータベースに直接接続し、パーティション化されたテーブルに関する情報を取得できます。 は、お使いのクラスタ構成に応じて変更される可能性があり、以下の情報を知っておく必要があります。

  1. ハイブメタストアは、テーブルに関するメタデータを格納するように構成されているデータベース(例えばPostgreSQLのは、MySQLなど)。
  2. 通常、metastoreは、ハイブメタストアデータベースにテーブル情報が格納されるデータベース名です。
  3. TBLSは、ハイブテーブル情報を格納するテーブルです。 DBSは、ハイブデータベース情報を格納するテーブルであり、PARTITIONSは、ハイブでパーティション化に関する情報をwhochテーブルに格納したテーブルです。
  4. DB_IDは、TBLSの外部キーであり、TBL_IDTBLSの外部キーです。PARTITIONSです。
  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接続のセットアップが必要です。 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);

であります
関連する問題