Hive中的加入行为有何不同?

时间:2016-05-20 13:51:48

标签: sql hadoop join hive left-join

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

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

我在sql工作台上执行此查询,它返回3百万,这是正确的,因为它是一个左连接。但是当我将这些数据上传到Hive并运行相同的查询时,它返回9Million。任何人都可以解释为什么会这样吗?与普通SQL相比,Hive中的连接行为有何不同?

3 个答案:

答案 0 :(得分:0)

数据不一样。我建议使用“直方图直方图”查询来找出问题所在:

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;

这将给出有多少不匹配的概念;有多少连体衣,二十几岁等等。

答案 1 :(得分:0)

使用配置单元

select count(*) from tb1

看数据是3百万

tb2 id one-to-many

hive插入日期选择?

答案 2 :(得分:0)

试试这个

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