環境:Hadoop(HDFS)
言語:Hive
Hiveにて、すでに存在するテーブルに対して、
初期値を設定しながらカラムを追加する方法が知りたいです。
既存テーブル:t1
id | name |
---|---|
1 | sato |
2 | suzuki |
3 | tanaka |
期待する結果:t1
id | name | class |
---|---|---|
1 | sato | 1 |
2 | suzuki | 1 |
3 | tanaka | 1 |
色々調べてみた結果、以下の2通りのアプローチがあるかと思います。
(1)初期値を設定しながら、カラムを追加する
(2)カラムを追加した上で、同一のデータで上書きする
(1)初期値を設定しながら、カラムを追加する
①ALTER TABLE t1 ADD COLUMNS(class int);
②ALTER TABLE t1 ADD COLUMNS(class int default 1);
③ALTER TABLE t1 ADD COLUMNS(class int not null default 1);
①であればカラムのみの追加はできた(初期値はnullとなる)のですが、②③だと失敗します。
※おそらくMySQLなら②や③は実行できると思います。
(2)カラムを追加した上で、同一のデータで上書きする
(1)がHiveで実行できない場合を想定しています。
①ALTER TABLE t1 ADD COLUMNS(class int);
②INSERT INTO t1(class) VALUES(1);
①の後に②を実行すると、以下のようになってしまいました。
期待しない結果:t1
id | name | class |
---|---|---|
1 | sato | null |
2 | suzuki | null |
3 | tanaka | null |
null | null | 1 |
Hiveの情報が書籍もwebも少ないのでどうしたらよいかと困っています。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/07 09:05
2018/06/07 09:50