Repository navigation
feat: size Iceberg scans from pruned file work - #787
Open
alexanderbianchi wants to merge 4 commits into
Open
alexanderbianchi wants to merge 4 commits into
alexanderbianchi wants to merge 4 commits into
Conversation
This was referenced Oct 20, 2026
alexanderbianchi
added this pull request to stack #791
October 20, 2026 14:58
alexanderbianchi
force-pushed
the
alex.bianchi/iceberg-pruned-task-count
branch
from
October 20, 2026 23:22
f75ccd2 to
c5f96f5
Compare
alexanderbianchi
removed this pull request from stack #791
October 21, 2026 00:17
alexanderbianchi
force-pushed
the
alex.bianchi/iceberg-pruned-task-count
branch
from
October 21, 2026 00:17
c5f96f5 to
cbefc78
Compare
alexanderbianchi
added this pull request to stack #794
October 21, 2026 00:18
alexanderbianchi
force-pushed
the
alex.bianchi/iceberg-pruned-task-count
branch
from
October 21, 2026 00:20
cbefc78 to
09db90e
Compare
alexanderbianchi
marked this pull request as ready for review
October 21, 2026 05:08
alexanderbianchi
force-pushed
the
alex.bianchi/iceberg-pruned-task-count
branch
from
October 21, 2026 05:28
6f68dad to
3c25b55
Compare
gabotechs
force-pushed
the
alex.bianchi/iceberg-pruned-task-count
branch
from
October 21, 2026 10:53
3c25b55 to
aa21dbe
Compare
gabotechs
approved these changes
Oct 22, 2026
| .map(|count| { | ||
| let count = node | ||
| .planned_file_count() | ||
| .map_or(count, |files| count.min(files as f64)); |
Collaborator
There was a problem hiding this comment.
🤔 So we cannot byte-range split files here no?
It'd be great if somehow at some point we could use native DataFusion parquet reads for Iceberg.
Comment on lines
+46
to
+57
| .configure_session(|mut state| { | ||
| let mut config = IcebergConfig::default(); | ||
| config.eager_file_planning = true; | ||
| state | ||
| .config() | ||
| .get_or_insert_default() | ||
| .options_mut() | ||
| .extensions | ||
| .insert(config); | ||
| Ok(state) | ||
| })? | ||
| .build() |
Collaborator
There was a problem hiding this comment.
This occupies a fair amount of real-state, but the only important bit for a test reviewer is:
config.eager_file_planning = true;Maybe we can add one more helper that says:
.iceberg_config_mut(|&mut iceberg_cfg| { ... })Or something like:
.with_eager_file_planning()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.
What changes
For opt-in eager Iceberg file planning, retain selected file bytes, optional row counts, and whether a predicate or delete files can change output cardinality. Use those planned-file statistics rather than whole-snapshot totals and cap the desired distributed scan task count by available file work. Empty plans report exact zero rows; filtered or delete-bearing scans do not claim exact row counts. With eager planning off, existing snapshot-based estimation remains unchanged.
This is the file-statistics/task-sizing portion of DataDog#30 that was intentionally excluded from upstream #773. It does not introduce byte-balanced assignment, column-byte join costing, or worker routing.
Stack
Based on #773, then #786, then upstream
main. Review only the base-to-head diff.Validation
cargo fmt --all -- --checkcargo test -p datafusion-distributed-iceberg --features integrationcargo clippy -p datafusion-distributed-iceberg --features integration --all-targets -- -D warningsTests cover manifest totals when snapshot summaries are missing, filtered/inexact statistics, selected-file counts and bounded task sizing. No performance claim. Developed with AI assistance.