Текущата схема е:
hive> describe tableA;
OK
id int
ts timestamp
Искам да променя ts
колона да бъде BIGINT
без да изпускам таблица и да създам отново. Възможно ли е?
Текущата схема е:
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 tableA CHANGE a,b,c a,b,c BIGINT;
Опитах се да разделя колони със запетая и не се получи. Причината да попитам е, че таблицата ми е създадена с помощта на интерфейса Hue за кошер и DECIMAL
по подразбиране е (10,0)
, но аз изисквам (38,0)
- person AM_Hawk; 14.04.2016
Обикновено е лесно да промените/модифицирате съществуващата таблица, като използвате този синтаксис в Hive.
ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type
Тук можете да промените името на колоната и типа на данните наведнъж. Ако не искате да промените col_name, просто направете old_col_name и new_col_name еднакви. Добре.
Елате при вашия проблем. Ако искате да промените ts колоната да бъде BIGINT. Това означава тип колона, който променяте. така че просто стартирайте тази заявка.
ALTER TABLE tableA CHANGE ts ts BIGINT;
Тук ts и ts са еднакви, означава, че не променяте името на колоната, а променяте типа на колоната; ако искате да промените името на колоната също просто го стартирайте.
ALTER TABLE tableA CHANGE ts new_col BIGINT;
Сега бягай
hive> describe tableA; OK id int new_col bigint
alter table {table_name} partition column ({column_name} {column_type})
. Hive може да създаде много несъответствия толкова лесно. Може би съм аз, но Hive е много разочароващ :-( - person Kenji Noguchi   schedule 07.01.2016