[
https://issues.apache.org/jira/browse/HIVE-11306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14637516#comment-14637516
]
Wei Zheng commented on HIVE-11306:
----------------------------------
Looks like that's the problem. The bloom test early-determines nomatch, which
is good, but broke the left outer join assumption.
So maybe the right logic should be:
{code}
if (!bloom1.testLong(keyHash) && !isOnDisk(partitionId)) {
...
return JoinUtil.JoinResult.NOMATCH;
}
// otherwise just pass long to the next round (join for spill partition) to
decide what to do
{code}
> Add a bloom-1 filter for Hybrid MapJoin spills
> ----------------------------------------------
>
> Key: HIVE-11306
> URL: https://issues.apache.org/jira/browse/HIVE-11306
> Project: Hive
> Issue Type: Improvement
> Components: Hive
> Affects Versions: 1.3.0, 2.0.0
> Reporter: Gopal V
> Assignee: Gopal V
> Attachments: HIVE-11306.1.patch
>
>
> HIVE-9277 implemented Spillable joins for Tez, which suffers from a
> corner-case performance issue when joining wide small tables against a narrow
> big table (like a user info table join events stream).
> The fact that the wide table is spilled causes extra IO, even though the nDV
> of the join key might be in the thousands.
> A cheap bloom-1 filter would add a massive performance gain for such queries,
> massively cutting down on the spill IO costs for the big-table spills.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)