2015-02-23 5 views
0

Я дал инструкцию по обновлению, которая отлично работает в СУБД, но не работает в HIVE. В настоящее время в энцефалопатии, вы не можете иметь ссылку из нескольких таблиц (как в запросе TABLE TableA, TableB ссылки)Несколько ссылок на таблицы в заявлении об обновлении HIVE

UPDATE A 
FROM TableA A, TableB B 
SET DepartmentId = B.DepartmentId 
WHERE A.CustomerId = B.CustomerId ; 

мне нужна твоя помощь Как я могу добиться того же в энцефалопатии? возможная альтернатива в ВИЧ?

ответ

0

Таблицы улья неизменяемы. Поэтому обновление невозможно. Вы всегда можете переписать всю таблицу:

CREATE TABLE TableA_new 
AS 
SELECT A.c1,A.c2, ... , B.DepartmentId , .. 
FROM TableA A, TableB B 
WHERE A.CustomerId = B.CustomerId ; 

Ответ частично верно, обновление доступно от HIVE 0.14;) GL

+0

Я имел в виду транзакционную поддержку На уровне строки, доступной с момента улья 0.14 Обратите внимание на [Обновление по вопросам ВИЧ/СПИДа] (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update). Вы ссылаетесь на CREATE TABLE AS .., что не так, я говорю о .... – Sanjiv

1

Поскольку улей не поддерживает вставки уровня строки и обновления Есть несколько обходных путей. Ответ, упомянутый выше, является одним из таких. Один из способов - сделать то же самое и снова вставить переписать в ту же таблицу.

ВСТАВИТЬ ПЕРЕЗАПИСАТЬ ТАБЛИЦА А ВЫБОР A.c1, A.c2, ..., B.DepartmentId, .. ОТ TableA А, Б TableB ГДЕ A.CustomerId = B.CustomerId;

Это будет как обновление той же таблицы.

+0

См. Https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update – Sanjiv

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

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