Превратить не-Куду в стол Куду в Импале

возникла проблема с impala update statement, когда я использовал код ниже

update john_estares_db.tempdbhue set QU=concat(account_id,"Q",quarter(mrs_change_date)," ",year(mrs_change_date));

он возвращает сообщение об ошибке:

AnalysisException: Impala does not support modifying a non-Kudu table: john_estares_db.tempdbhue

Я хотел бы знать, могу ли я изменить свою таблицу, не относящуюся к Kudu, на таблицу Kudu, или есть альтернатива для update statement для не-Kudu в Impala. TIA


person jbest    schedule 17.05.2019    source источник


Ответы (2)


Apache Kudu - это хранилище данных (считайте его альтернативой HDFS / S3, но хранит только структурированные данные), которое позволяет обновления на основе первичного ключа. Имеет хорошую интеграцию с Impala. Таблица куду на Imapla - это способ запроса данных, хранящихся в Kudu.

Короче говоря, если у вас еще не установлен и не настроен Kudu, вы не можете создать таблицу kudu на Impala.

Если у вас установлен и настроен Kudu, вы не можете просто преобразовать таблицу kudu table. Вам нужно создать новую таблицу kudu с аналогичной структурой с некоторыми столбцами первичного ключа (Kudu требует первичного ключа для всех таблиц) и вставить в нее данные из старой таблицы, отличной от kudu, с помощью sql-запроса insert into .. select * from ....

person shanmuga    schedule 23.05.2019
comment
спасибо за помощь, но проблема с insert into .. select * from .... в том, что он добавляет строки вместо столбцов - person jbest; 24.05.2019

Какой тип стола john_estares_db.tempdbhue? Hive или другой тип таблицы, обновление или обновление не поддерживаются. Вы можете использовать show create table, чтобы проверить тип вашей таблицы. показать создать таблицу Если у вас установлен куду, вы можете создать таблицу куду и переместить данные в таблицу куду, затем вы можете использовать свой код обновления.

person GarlicSauce    schedule 13.11.2019