Добавить 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
Надеюсь, что это поможет.