apache / apache/iceberg

Spark: Support read select paths of of shredded variant (parquet readers)

Open
#16,726 0 comments 0 reactions 0 assignees View on GitHub
improvement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.