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

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

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

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

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

пожалуйста, помогите. Благодаря

Ответ 1

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

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';

Надеюсь, это поможет.

Ответ 2

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

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

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

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

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

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

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

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