Spark: Support read select paths of of shredded variant (parquet readers)
- Dominant language
- Java
- Stars
- 9.2k
- Forks
- 3.5k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 132
Description
### Feature Request / Improvement
This is the companion issue for #16448, it is needed to support Spark variant extraction pushdown end to end. After Spark pushes variant_get paths from Filter/Project nodes into Iceberg scans, we need variant readers that can selectively read paths from variant, instead of returning the whole variant.
**Scope**
- Support read/extract most used types, do not read arrays, struct, nest struct etc for initial version. If Spark pushes down unsupported extraction type, reject pushdown and returns the whole variant.
- Only wire in for batch row scan.
### Query engine
None
### Willingness to contribute
- [x] I can contribute this improvement/feature independently
- [ ] I would be willing to contribute this improvement/feature with guidance from the Iceberg community
- [ ] I cannot contribute this improvement/feature at this time
Contributor guide
Research direction
Start with the variant readers used by Parquet batch row scans and trace how variant_get paths from Spark Filter and Project nodes reach Iceberg scans. Review the existing extraction behavior and identify the supported scalar types, leaving arrays and nested structures for rejection. Done means supported paths are read selectively, unsupported pushdowns fall back to the whole variant, and only batch row scans are wired.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- data-engineering
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100