hive连接查询返回内部连接的笛卡尔积

w46czmvw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(237)

我在使用配置单元创建的两个表上进行内部联接。一个是大表“交易桶”,另一个是小表“交易对手桶”。它们的创建方式如下:-

DROP TABLE IF EXISTS trades_bucket;
CREATE EXTERNAL TABLE trades_bucket(
parentId STRING,
BookId STRING) CLUSTERED BY(parentId) SORTED BY(parentId) INTO 32 BUCKETS;

DROP TABLE IF EXISTS counterparty_bucket;
CREATE EXTERNAL TABLE counterparty_bucket(
Version STRING,AccountId STRING,childId STRING) 
CLUSTERED BY(childId ) SORTED BY(childId) INTO 32 BUCKETS;

表之间的连接

SELECT /*+ MAPJOIN(counterparty_bucket) */ BookId , t.counterpartysdsid, c.sds  
FROM counterparty_bucket c join trades_bucket t 
on c.childId = t.parentId
where c.childId ='10001684'

问题是,联接正在从两个表中生成笛卡尔积。我的意思是,对于给定的id,如果大表有100行,小表有4行,我希望join返回100行,但我得到的是400行。有人有线索或目击过类似情况吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题