web-dev-qa-db-ja.com

場所を変更せずにHiveテーブルの名前を変更する方法は?

以下のHiveドキュメントに基づきます。

テーブルの名前を変更

ALTER TABLE table_name RENAME TO new_table_name;

このステートメントを使用すると、テーブルの名前を別の名前に変更できます。

バージョン0.6以降、管理対象テーブルの名前を変更すると、HDFSの場所も移動します。 (旧バージョンのHiveバージョンでは、HDFSの場所を移動せずにメタストアのテーブルの名前を変更しただけです。)

場所を変更せずにテーブルの名前を変更する方法はありますか?

16
Osiris

はい、できます。以下の3つのコマンドを順番に実行するだけです。

  1. Hiveに外部テーブルtest_1があるとします。そして、test_1ではなくtest_2の場所を指すtest_2という名前に変更します。次に、以下のコマンドを使用して、このテーブルを管理対象テーブルに変換する必要があります。 test_1-> test_1の場所を指す

    ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
    
  2. テーブル名を変更します。

    ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
    
  3. 外部テーブルに名前を変更した後、再び管理テーブルを変換します。

    ALTER TABLE db_name.test_2 SET TBLPROPERTIES('EXTERNAL'='TRUE');
    

db_name.test_2テーブルはtest_2の場所を指します。管理テーブルを作成せずに実行すると、test_1の場所がポイントされます。

14
Sanjeev

Hive 2.2.0以降、管理テーブルのHDFSロケーションは、テーブルがLOCATION句なしでデータベースディレクトリの下に作成された場合にのみ移動されます。 Link

4
sdikby

ALTER TABLEは、CREATEまたはSELECTのようにHiveのdatabasename.tablename構文に従いません。最初にデータベース名を指定してから、alter tableステートメントを実行します。

次のような構文

USE databasename;
ALTER TABLE old_tablename RENAME TO new_tablename;
1

実行されるコマンドは次のとおりです

ALTER TABLE old_ratings RENAME TO ratings;
1
BigData-Guru