現在のスキーマは次のとおりです。
Hive> describe tableA;
OK
id int
ts timestamp
テーブルを削除せずにts
列をBIGINT
に変更し、再作成したい。出来ますか?
ソリューションを見つけました:
ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;
詳細については、こちらをご覧ください: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn
ALTER TABLE table_name CHANGE col_name col_name newType
通常、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