我有一个视图表与一个临时表连接,并有意启用了以下参数。
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 条记录具有相同的用户 ID。
但在某些情况下,几个用户 ID 在 SCU Temp 表中带有大约 10k-20k 条记录,这会产生叉积效应。
在这种情况下,它将永远运行,只需 1 个映射器即可完成。
有没有办法优化它并优雅地运行它?