Добавить раздел после создания таблицы в hive

Я создал не секционированную таблицу и загрузил данные в таблицу, теперь я хочу добавить PARTITION на основе отдела в этой таблице, могу ли я это сделать? Если я это сделаю:

ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';

Это дает мне ошибку:

FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}

пожалуйста, помогите. Спасибо

2 ответов


сначала создайте таблицу таким образом, чтобы у вас не было столбца раздела В таблице.

create external table Student(col1 string, col2 string) partitioned by (dept string) location 'ANY_RANDOM_LOCATION';

Как только вы закончите с созданием таблицы, измените таблицу, чтобы добавить раздел отдела мудрый, как это:

alter table Student add partition(dept ='cse') location '/test';

Я надеюсь, что это поможет.


вы не можете изменить раздел таблицы, если вы не определили раздел при создании таблицы.

Если при изменении нераздельной таблицы для добавления раздела вы получаете эту ошибку:" семантическая таблица исключений не является секционированной, но существует спецификация раздела: {dept=CSE}", это означает, что вы пытаетесь включить секционированную таблицу в саму таблицу.

вы не получаете синтаксическую ошибку, потому что синтаксис команды правильный и используется для изменения раздела колонна.

Узнайте больше о таблицах Hive:

https://www.dezyre.com//hadoop-tutorial/apache-hive-tutorial-tables

вы также можете проверить возможное чередование в таблице:

https://sites.google.com/site/hadoopandhive/home/how-to-create-table-partition-in-hive

надеюсь, что это помогает.