Я новичок в кусте. У нас было требование добавить столбцы в существующую таблицу улья.Я сделал это с помощью команды ниже.alter table tableName добавить столбцы (тип данных colName) каскад;
Но в документации по кустам у нас есть команда alter для добавления столбцов на уровне раздела.Я попробовал приведенные ниже команды.
hive> SET hive.exec.dynamic.partition = true;
hive> alter table test_alter_col partition(c=1) add columns (d1 int);
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Duplicate column name: d1
hive> select d1 from test_alter_col where c=1;
FAILED: SemanticException [Error 10004]: Line 1:7 Invalid table alias or column reference 'd1': (possible column names are: a1, b1, d, c)
hive> alter table test_alter_col partition(c=1) add columns (d2 int);
OK
Time taken: 0.178 seconds
hive> select d2 from test_alter_col where c=1;
FAILED: SemanticException [Error 10004]: Line 1:7 Invalid table alias or column reference 'd2': (possible column names are: a1, b1, d, c)
hive>
Что именно делает вышеуказанная команда, и есть ли варианты использования команды alter на уровне раздела.
Edit 1 -
Я тоже пробовал приведенные ниже команды, но до сих пор не могу ни запросить вновь добавленный столбец, ни вставить данные.
create table test_partn (a int, b int, c int) partitioned by (d int) row format delimited fields terminated by '\t' stored as textfile;
insert into table test_partn partition(d) values (1, 11, 111, 1111), (2, 22, 222, 2222), (3, 33, 333, 3333);
SET hive.exec.dynamic.partition = true;
alter table test_partn partition(d=1111) add columns (e int);
insert into test_partn partition(d=1111) values (1, 12, 13, 14);
FAILED: SemanticException [Error 10044]: Line 1:12 Cannot insert into target table because column number/types are different '1111': Table insclause-0 has 3 columns, but query has 4 columns.
alter table test_partn partition(d=3333) add columns (e int) restrict;
insert into test_partn partition(d=3333) values (1, 12, 13, 14);
Спасибо, Виджай