以下のHiveドキュメントに基づきます。
テーブルの名前を変更
ALTER TABLE table_name RENAME TO new_table_name;
このステートメントを使用すると、テーブルの名前を別の名前に変更できます。
バージョン0.6以降、管理対象テーブルの名前を変更すると、HDFSの場所も移動します。 (旧バージョンのHiveバージョンでは、HDFSの場所を移動せずにメタストアのテーブルの名前を変更しただけです。)
場所を変更せずにテーブルの名前を変更する方法はありますか?
はい、できます。以下の3つのコマンドを順番に実行するだけです。
Hiveに外部テーブルtest_1があるとします。そして、test_1ではなくtest_2の場所を指すtest_2という名前に変更します。次に、以下のコマンドを使用して、このテーブルを管理対象テーブルに変換する必要があります。 test_1-> test_1の場所を指す
ALTER TABLE db_name.test_1 SET TBLPROPERTIES('EXTERNAL'='FALSE');
テーブル名を変更します。
ALTER TABLE db_name.test_1 RENAME TO db_name.test_2;
外部テーブルに名前を変更した後、再び管理テーブルを変換します。
ALTER TABLE db_name.test_2 SET TBLPROPERTIES('EXTERNAL'='TRUE');
db_name.test_2テーブルはtest_2の場所を指します。管理テーブルを作成せずに実行すると、test_1の場所がポイントされます。
Hive 2.2.0以降、管理テーブルのHDFSロケーションは、テーブルがLOCATION句なしでデータベースディレクトリの下に作成された場合にのみ移動されます。 Link
ALTER TABLEは、CREATEまたはSELECTのようにHiveのdatabasename.tablename構文に従いません。最初にデータベース名を指定してから、alter tableステートメントを実行します。
次のような構文
USE databasename;
ALTER TABLE old_tablename RENAME TO new_tablename;
実行されるコマンドは次のとおりです
ALTER TABLE old_ratings RENAME TO ratings;