当Hive中的数据量增加时,左连接中缺少连接da

mjqavswn  于 2023-10-18  发布在  Hive
关注(0)|答案(1)|浏览(165)

在这个hive sql中,当table1中的数据量很大时,t2.c会丢失,但它应该被连接,如何在mapreduce级别解释这一点?

  1. SELECT
  2. t1.a,
  3. t1.b,
  4. t2.c
  5. FROM
  6. table1 t1
  7. LEFT JOIN
  8. (
  9. select
  10. t02.id,
  11. t02.c
  12. from
  13. (
  14. SELECT
  15. id,
  16. c,
  17. row_number() over (partition by id order by c) rk
  18. FROM
  19. table2
  20. )t02
  21. where t02.rk = 1
  22. ) t2
  23. ON
  24. t1.id = t2.id;

可能是Map任务花费太多时间

66bbxpm5

66bbxpm51#

不要计算行数然后放弃其中的大部分,而是尝试分组并重新调整c的最小值。

  1. SELECT
  2. t1.a
  3. , t1.b
  4. , t2.c
  5. FROM table1 t1
  6. LEFT JOIN (
  7. SELECT
  8. t02.id
  9. , t02.c
  10. FROM (
  11. SELECT
  12. id
  13. , MIN(c) as c
  14. FROM table2
  15. GROUP BY
  16. id
  17. ) t02
  18. ) t2 ON t1.id = t2.id;

还要注意,您选择了使用LEFT JOIN,因此如果table1.id表2中没有www.example.com值,那么列c将为NULL。您可以使用INNER JOIN来隐藏结果中两个表之间不匹配的任何行。

展开查看全部

相关问题