これがセットアップです-別のマシン上のMySQLをメタストアとして使用するHiveがあります。 Hiveコマンドラインシェルを起動し、テーブルを作成して説明することができます。しかし、MySQLがメタストアとして使用されている他のマシンにログオンすると、MySQLのHiveテーブルの詳細が表示されません。
例えばこれがHiveコマンドです-
Hive> create table student(name STRING, id INT);
OK
Time taken: 7.464 seconds
Hive> describe student;
OK
name string
id int
Time taken: 0.408 seconds
Hive>
次に、MySQLがインストールされているマシンにログオンし、このMySQLがHiveメタストアとして使用されます。私は「メタストア」データベースを使用しています。しかし、テーブルを一覧表示したい場合、Hiveで作成したテーブルまたはテーブル情報が表示されません。
メタストアでHiveテーブル情報を確認するにはどうすればよいですか?
まず、メタストアが保存されているMySqlデータベースを見つけます。これはHive-site.conf-接続URLにあります。次に、MySqlに接続すると、次のことができます。
use metastore;
show tables;
select * from TBLS; <-- this will give you list of your Hive tables
特定の列が属する他のテーブルを検索する場合のもう1つの便利なクエリ:
SELECT c.column_name, tbl_name, c.comment, c.type_name, c.integer_idx,
tbl_id, create_time, owner, retention, t.sd_id, tbl_type, input_format, is_compressed, location,
num_buckets, output_format, serde_id, s.cd_id
FROM TBLS t, SDS s, COLUMNS_V2 c
-- WHERE tbl_name = 'my_table'
WHERE t.SD_ID = s.SD_ID
AND s.cd_id = c.cd_id
AND c.column_name = 'my_col'
order by create_time
MySQLデータベースのメタストアスキーマをクエリできます。何かのようなもの:
mysql> select * from TBLS;
Hiveのメタデータを保存するようにMySQLメタストアを構成し、保存されたメタデータを確認および確認する方法の詳細 ここ 。
* Hadoopサービスのセットアップは他のサービスでもありますが(これも必須です)、管理者はほとんどのシナリオでリレーショナルデータベースを使用して、Hiveやoozieなどのサービスのメタデータ情報を保存します。
したがって、Hiveがバックアップされているデータベース(mysql、postgresql、sqlserverなど)を見つけてください。メタデータ情報はTBLSテーブルで確認できます。*
Hiveをアップグレードする際は、これらのTBLSのバックアップを取る必要があります。