У меня есть таблица представлений, объединенная с временной таблицей с намеренно включенными ниже параметрами.
hive.auto.convert.join=true;
hive.execution.engine=tez;
Фрагмент кода,
CREATE TABLE STG_CONVERSION AS
SELECT CONV.CONVERSION_ID,
CONV.USER_ID,
TP.TIME,
CONV.TIME AS ACTIVITY_TIME,
TP.MULTI_DIM_ID,
CONV.CONV_TYPE_ID,
TP.SV1
FROM VIEWS TP
JOIN SCU_TMP CONV ON TP.USER_ID = CONV.USER_ID
WHERE TP.TIME <= CONV.TIME;
В обычном сценарии в обеих таблицах может быть любое количество записей.
Однако в таблице SCU_TMP ожидается только 10–50 записей с одним и тем же идентификатором пользователя.
Но в некоторых случаях несколько идентификаторов пользователей содержат около 10 000 – 20 000 записей во временной таблице SCU, что создает эффект перекрестного произведения.
В таких случаях он будет работать вечно, и для завершения потребуется всего один преобразователь.
Есть ли способ оптимизировать это и запустить это изящно?