2016-07-01 11 views
0

Из просмотра в Интернете - я понимаю, что DELETE & UPDATE Классы на Impala/Hive не поддерживаются. Я пытаюсь найти обходное решение для этого случая. я пытался выполнить его с пунктом OVERWRITE ВСТАВИТЬ без успеха: \Hive/Imapala - выполнить условие удаления: `УДАЛИТЬ из [ТАБЛИЦА] ГДЕ [СОСТОЯНИЕ]`

У меня есть секционированная таблица, которая содержит: user_id, день, месяц, год (Partition на день, месяц, год).

сказать, что я 1 строка для каждой даты (каждая дата представлена ​​теми 3 колонки разделов), и я хочу, чтобы удалить строку 2016-05-01

Если я использовал MySQL я бы написать:

DELETE FROM tblname WHERE year = 2016 and month = 5 and day = 1

Как выполнить его на Hive/Impala?

Спасибо!

+0

http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

ответ

0

Разделите свои данные так, чтобы строки (использовать функцию окна row_number), которые вы хотите удалить, находятся в разделе. Затем вы можете удалить раздел, не затрагивая остальную часть вашей таблицы. Это довольно устойчивая модель, даже если ваш набор данных становится довольно большим.

подробно о разделе.

www.tutorialspoint.com/hive/hive_partitioning.htm

+0

Спасибо! Это сработало ! Я использовал раздел «drop partition», который вы упомянули: 'ALTER TABLE имя_таблицы DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec, ...; ' * Я не использовал функцию' row_number', потому что моя таблица уже разделена, как я уже сказал. – shayms8

+0

, пожалуйста, http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

 Смежные вопросы

  • Нет связанных вопросов^_^