sql—配置单元中的联接是否有不同的行为?

tquggr8v  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(409)

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

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

我在一个sql工作台上执行这个查询,它返回300万个正确的结果,因为它是一个左连接。但是当我把这些数据上传到hive并运行相同的查询时,它返回了900万。有人能解释为什么会这样吗?连接在配置单元中的行为是否与普通sql不同?

r1zhe5dt

r1zhe5dt1#

试试这个

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

9njqaruj2#

使用Hive

select count(*) from tb1

见数据数字是3百万
tb2标识一对多
配置单元插入日期选择?

6g8kf2rb

6g8kf2rb3#

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

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;

这将给出有多少不匹配的概念;多少个一个,两个,等等。

相关问题