Hive 中的加入行为是否不同?

Do joins in Hive behave differently?

我有两个表 t1 包含 300 万条记录,t2 包含 11000 条记录。我执行查询

Select Count(*) FROM 
t1 LEFT JOIN t2 
ON t1.id = t2.id

我在 sql workbench 上执行此查询,它 returns 300 万是正确的,因为它是左连接。但是,当我将此数据上传到 Hive 和 运行 相同的查询时,它 returns 900 万。谁能解释为什么会这样?与正常相比,连接在 Hive 中的行为是否不同 SQL?

数据不一样。我建议使用 "histogram of histogram" 查询来找出问题所在:

select cnt, count(*), min(id), max(id)
from (select id, count(t2.id) as cnt
      from t1 left join
           t2
           on t1.id = t2.id
      group by id
     ) t
group by cnt
order by cnt;

这将给出有多少不匹配的信息;有多少个连体衣、双胞胎等等。

使用配置单元

select count(*) from tb1

看数据数是300万

tb2 id一对多

hive 插入日期 select?

试试这个

Select COUNT(id) FROM 
t1 LEFT OUTER JOIN t2 
ON t1.id = t2.id;