在这个hive sql中,当table1中的数据量很大时,t2.c会丢失,但它应该被连接,如何在mapreduce级别解释这一点?
SELECT
t1.a,
t1.b,
t2.c
FROM
table1 t1
LEFT JOIN
(
select
t02.id,
t02.c
from
(
SELECT
id,
c,
row_number() over (partition by id order by c) rk
FROM
table2
)t02
where t02.rk = 1
) t2
ON
t1.id = t2.id;
可能是Map任务花费太多时间
1条答案
按热度按时间66bbxpm51#
不要计算行数然后放弃其中的大部分,而是尝试分组并重新调整c的最小值。
还要注意,您选择了使用LEFT JOIN,因此如果table1.id表2中没有www.example.com值,那么列c将为NULL。您可以使用INNER JOIN来隐藏结果中两个表之间不匹配的任何行。