Hive update with subquery

Refresh

March 2019

Views

474 time

6

I'm trying to update a Hive table from subquery and I know hive doesn't support such updates. Is there any work-around for this?

My update looks like this

UPDATE tmp_aka
    SET guid = (SELECT mguid FROM tmp_maxs
                                        WHERE tmp_maxs.guid = tmp_aka.guid);

5 answers

0

To compare values from two tables, u need to JOIN tables and then compare the value in subquery. Hope, this will help u.

UPDATE tmp_aka
    SET guid = (SELECT t1.mguid FROM tmp_maxs t1 LEFT JOIN tmp_aka t2 ON t1.guid = t2.guid);
2

If tmp_maxs contains all the records of tmp_aka, you can do it this way:

INSERT overwrite TABLE tmp_aka
SELECT tmp_aka.col1, tmp_aka.col2, …, tmp_maxs.mguid
FROM tmp_aka LEFT JOIN tmp_maxs ON tmp_aka.guid = tmp_maxs.guid
0

There might be a simpler solution to your update

UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_maxs
                                    WHERE tmp_maxs.guid IN tmp_aka.guid);
2

Вы можете выполнить объединение в суб-запрос, чтобы получить те же значения, что и в запросе выше. Попробуйте использовать следующий запрос:

UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_aka tmp JOIN tmp_maxs ON tmp_aka.guid = tmp_maxs.guid);
2

Может быть, вы можете создать таблицу для выбора результата заявления и вставить новое значение с помощью вставки в таблицах выбора значений из вновь созданной таблицы