Nested columns are not repartitioned: one chunk per batch instead of Rust's ~1 MB chunks

Open
#723 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
55/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
java
Domain
data

Research direction

Start with Repartitioner.supports and the byte sizing and head/tail slicing paths for StructData, ListData, and FixedSizeListData. Extend RepartitionInteropIntegrationTest with list<struct<utf8>> and struct columns, then compare chunk row counts and sizes with vortex-jni. Done means nested columns are repartitioned into comparable ~1 MB chunks.

Written by the indexing model from the issue text.

Description

bug

Repartitioner.supports covers Primitive, Bool, Decimal, Utf8 and Binary; struct, list, fixed-size-list, map and variant columns are written one chunk per input batch. Rust's RepartitionStrategy coalesces every column, nested ones included, into ~1 MB chunks of 8192-row multiples.

Found on Raincloud coig: conversations (list<struct<question: utf8, answer: utf8>>) is written as 3 chunks of 65536 rows (the Parquet import's batches), where Rust writes 22 chunks of 8192 rows. The column is 2.6% bigger than Rust's (63.74 MB vs 62.13 MB from vortex-jni 0.91), and a row-range or pruned read touches 8x more rows per chunk.

Fix: byte sizing and head/tail slicing for StructData, ListData and FixedSizeListData carriers, then admit them in supports.

Test first: extend RepartitionInteropIntegrationTest with list<struct<utf8>> and struct columns, comparing chunk row counts and sizes with vortex-jni.

Dominant language
Java
Stars
3
Forks
2
Avg merge
9h 19m
Merged PRs (30d)
154

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dfa1/vortex-java

All issues in dfa1/vortex-java

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.