Repository navigation
Conversation
Contributor
|
Can we get some extra review cycles on #11549 and land that first, since it already brings in |
adriangb
added a commit
to adriangb/datafusion
that referenced
this pull request
Oct 17, 2026
Pointing at arrow-rs main pulled in unrelated behavior changes (interleave buffer sharing, DST handling). Use a branch with the 60.0.0 tag, apache#11088 and the commits of apache/arrow-rs#11641 instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adriangb
force-pushed
the
sbbf-batch-union-apis
branch
from
October 18, 2026 04:37
2f6464e to
77292ad
Compare
adriangb
added a commit
to adriangb/datafusion
that referenced
this pull request
Oct 18, 2026
Points the arrow-rs crates at adriangb/arrow-rs sbbf-batch-union-apis-60: arrow-rs 60.0.0 + apache/arrow-rs#11088 + the commit of apache/arrow-rs#11641. Remove once arrow-rs releases these APIs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Thanks @mbutrovich . I reviewed #11549 and plan to restack this work on it once it merges (experiment for that in #11685) |
Contributor
Sounds good, thanks for the review pass! I was excited to see someone with another use for it so wanted to make sure it lands with what you need. |
adriangb
added a commit
to adriangb/datafusion
that referenced
this pull request
Oct 20, 2026
Points the arrow-rs crates at adriangb/arrow-rs sbbf-batch-union-apis-60: arrow-rs 60.0.0 + apache/arrow-rs#11088 + the commit of apache/arrow-rs#11641. Remove once arrow-rs releases these APIs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adriangb
added a commit
to adriangb/datafusion
that referenced
this pull request
Oct 30, 2026
Each build partition now fills its own Sbbf from the join hashes (HASH_JOIN_SEED, the same hashes the probe side computes) in its build task, sized for its distinct key count times the number of partitions. At the barrier the partition filters are ORed with Sbbf::union, folded to the target fpp, and dropped if they still exceed it. The probe checks a whole batch with the branch-free Sbbf::check_hashes. This removes the sort/dedup step, the serial fill at the barrier and the per-column filters, and gives float keys a bloom filter too. hash_join_bloom_filter_max_bytes now defaults to 8 MiB: larger filters fall out of cache and were slower in TPC-H SF100 benchmarks. Bumps the arrow-rs pin for Sbbf::insert_hashes / union / check_hashes (apache/arrow-rs#11641). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adriangb
force-pushed
the
sbbf-batch-union-apis
branch
from
November 2, 2026 19:06
adfd09f to
f929d5c
Compare
Contributor
|
@adriangb do you want to dust this one off? I think we're close to the point of pulling bloom filters into a new crate. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adriangb
force-pushed
the
sbbf-batch-union-apis
branch
from
November 10, 2026 18:26
f929d5c to
d2a52f9
Compare
Contributor
Author
|
I've rebased. I can't mark this as ready / non-draft because I've hit my PR limit. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Sbbf::estimated_fppto expose the bloom filter FPP estimate #11088 (Sbbf::estimated_fpp, merged), Add bloom filter folding to automatically size SBBF filters #9628 (folding, merged)Rationale for this change
DataFusion builds a parquet
Sbbfas the membership test in the dynamic filter of a hash join. Each build partition fills its own filter in parallel with hashes it has already computed, the filters are merged into one, the result is folded to the target fpp, and every probe row is checked against it.The public API cannot do this today:
insert_hash/check_hashare private, and per hashcheckexits early on a branch the CPU cannot predictMeasured in DataFusion on 16M probe rows: checking with a per-row branchy check takes ~104 ms, the branch-free check ~21 ms.
What changes are included in this PR?
All additions are on
parquet::bloom_filter::Sbbf:insert_hashes(&mut self, &[u64])check_hashes(&self, &[u64]) -> BooleanBuffer(featurearrow)union(&mut self, &Sbbf) -> Result<()>othermust have the same number of blocks or a multiple of it; a largerotheris folded on the fly (same grouping asfold_to_target_fpp), sofold(a ∪ b) == fold(a) ∪ fold(b)The hashes can come from any well-mixed 64-bit hash.
check/insertkeep using the spec hash; the docs say the two only agree when the caller uses the spec hash.An earlier version of this PR added
hash_value, publicinsert_hash/check_hashand Arrow array APIs (hash_array,insert_array,check_array,supports_data_type). DataFusion no longer needs them (it reuses its own join hashes), so they are removed.Are these changes tested?
check_hash.check_hashesequalscheck_hashfor each hash.Are there any user-facing changes?
New public API only. No breaking changes.
🤖 Generated with Claude Code