Apache Hive - 编程上相同的查询但结果不同,为什么?

问题描述 投票:0回答:1

我有 2 个表,Table1 有 41 列和超过 1 亿条记录,Table2 有 20 列和 1000 万条记录。

我使用以下查询来验证记录。

查询01。

SELECT count(*) FROM table1 t1 JOIN table2 t2 ON (
  t1.c_id = t2.c_id AND
  t1.e_id = t2.e_id AND
  t1.o_id = t2.o_id
)

查询02。

SELECT count(*) FROM table1 t1 JOIN table2 t2 ON (
  t1.c_id = t2.c_id AND
  t1.e_id = t2.e_id AND
  t1.o_id = t2.o_id
) GROUP BY t2.c_id

问题是,查询 01 计数与查询 02(总和)不匹配。有人可以指出这里的问题吗?

有运行在AWS EMR Hive 3.1.3-amzn-0版本上

sql hive amazon-emr
1个回答
0
投票

查询 01 和查询 02 之间的计数差异可能是由于您在查询 02 中对结果进行分组的方式造成的。在查询 01 中,您只是计算两个表之间匹配记录的总数,而在查询02,您按 t2.c_id 进行分组,然后计算每个组内的记录。

这意味着,如果 table2 中有多个具有相同 t2.c_id 的记录与 table1 中的单个记录匹配,则查询 02 会将它们计为该 t2.c_id 的一个匹配项,而查询 01 会将每个单独的匹配项计为一个匹配项。

© www.soinside.com 2019 - 2024. All rights reserved.