Hiveバージョン0.9を使用していて、Hiveテーブルの列を削除する必要があります。 Hiveコマンドのマニュアルをいくつか検索しましたが、バージョン0.14までのコマンドしか見つかりませんでした。 Hiveバージョン0.9でHiveテーブルの列を削除することはできますか?コマンドとは?ありがとう。
Sqlのような以下のステートメントを使用して、Hiveテーブルからテーブル列を単に削除することはできません。
ALTER TABLE tbl_name drop column column_name ----機能しません。
そのため、Hiveテーブルから列を削除するショートカットがあります。
Hiveテーブルがあるとします。
このテーブルから、列Dobを削除します。 ALTER TABLE REPLACEステートメントを使用して列を削除できます。
ALTER TABLE test_tbl REPLACE COLUMNS(ID STRING,NAME STRING,AGE STRING); you have to give the column names which you want to keep in the table
Hiveにドロップ列または削除列はありません。
SELECTステートメントは、0.13.0より前のHiveリリース、または構成プロパティHive.support.quoted.identifiersがnoneに設定されている場合、0.13.0以降のリリースで正規表現ベースの列指定を取得できます。
そうは言っても、以下を使用して新しいテーブルまたはビューを作成できます。
drop table if exists database.table_name;
create table if not exists database.table_name as
select `(column_to_remove_1|...|column_to_remove_N)?+.+`
from database.some_table
where
...
;
これにより、column_to_remove_1、...という名前の列を除く、some_tableからcolumn_to_remove_Nまでのすべての列を含むテーブルが作成されます。代わりにビューを作成することもできます。
ALTER TABLE table_name REPLACE COLUMNS ( c1 int, c2 String);
注:列リストから列を削除します。一致した列を保持し、言及されていない列をテーブルスキーマから削除します。
前述のように、alterステートメントを使用してテーブルを削除することはできません。
変更-置換は、すべての場合での動作が保証されているわけではありません。
私はここでこれに対する最良の答えを見つけました: https://stackoverflow.com/a/48921280/438545
hiveテーブルから列を削除することはできません。ただし、Hiveにテーブル(外部の場合)を削除し、(列を除外して)再作成したテーブルは、urデータを削除しません。だからあなたができることは(もしあなたがテーブル構造を持っていないなら)このコマンドを実行する:
show create table database_name.table_name;
次に、それをコピーして編集できます(列は削除されます)。その後、シェルの呼び出しに従って行うことができます。
テーブルの詳細は、empid、name、dept、salary、addressです。住所列を削除したい。クエリjdbc:Hive2://>のようにREPLACE COLUMNSと書くだけです。