我在使用配置单元创建的两个表上进行内部联接。一个是大表“交易桶”,另一个是小表“交易对手桶”。它们的创建方式如下:-
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行。有人有线索或目击过类似情况吗?
暂无答案!
目前还没有任何答案,快来回答吧!