web-dev-qa-db-ja.com

Hiveテーブルの列タイプを変更する方法はありますか?

現在のスキーマは次のとおりです。

Hive> describe tableA;
OK
id      int
ts      timestamp

テーブルを削除せずにts列をBIGINTに変更し、再作成したい。出来ますか?

25
interskh

ソリューションを見つけました:

ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;

詳細については、こちらをご覧ください: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn

53
interskh
ALTER TABLE table_name CHANGE col_name col_name newType
25
Animesh Raj Jha

通常、Hiveでこの構文を使用してexestingテーブルを変更/変更するのは簡単です。

ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type

ここで、列名とデータ型を一度に変更できます。 col_nameを変更したくない場合は、単にold_col_nameとnew_col_nameを同じにします。 OK。

あなたの問題に来てください。 ts列をBIGINTに変更する場合、変更する列タイプを意味します。したがって、このクエリを実行するだけです。

ALTER TABLE tableA CHANGE ts ts BIGINT;

ここでtsとtsは同じです。つまり、列名を変更するのではなく、列タイプを変更することを意味します。列名を変更する場合も単に実行します。

ALTER TABLE tableA CHANGE ts new_col BIGINT;

今すぐ実行

ハイブ> tableAの説明; 
 OK 
 id int 
 new_col bigint
10
Venu A Positive