Текущая схема:
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 одинаковыми. Ok.
Приходите к своей проблеме. Если вы хотите изменить столбец 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