環境: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