Skip to content

[vortex] Upgrade vortex to 0.89.0 and rework integration for better performance - #10723

Open
robert3005 wants to merge 3 commits into
apache:masterfrom
robert3005:rk/vortexbump
Open

robert3005 wants to merge 3 commits into
apache:masterfrom
robert3005:rk/vortexbump

Conversation

@robert3005

@robert3005 robert3005 commented Oct 21, 2026 •

Copy link
Copy Markdown

Purpose

Upgrade to latest version of vortex and rework vortex scans for better
performance. We follow the model from apache iceberg and with these changes
paimon vortex outperforms iceberg vortex. Local synthetic benchmark show great
read, scan and write performance. Happy to include any additional validation
required

TableReadBenchmark and TableWriterBenchmark below

EC2 (c7i.4xlarge, Ubuntu 26.04) (best / average, ms):

┌───────────────────────────┬───────────────┬───────────────┬───────────────┬───────────────┐
│         Benchmark         │    Parquet    │      ORC      │     Avro      │    Vortex     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Read 1M rows ×3           │ 1981 / 2003   │ 855 / 967     │ 2516 / 2542   │ 491 / 520     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Read, 4-column projection │ 518 / 528     │ 765 / 799     │ —             │ 282 / 284     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Write 3M rows             │ 28102 / 28156 │ 23287 / 23557 │ 25799 / 25950 │ 21805 / 22056 │
└───────────────────────────┴───────────────┴───────────────┴───────────────┴───────────────┘

Local (M4 Max) (best / average, ms):

┌───────────────────────────┬───────────────┬───────────────┬───────────────┬───────────────┐
│         Benchmark         │    Parquet    │      ORC      │     Avro      │    Vortex     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Read 1M rows ×3           │ 1343 / 1348   │ 374 / 377     │ 1712 / 1719   │ 282 / 289     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Read, 4-column projection │ 426 / 430     │ 273 / 276     │ —             │ 197 / 198     │
├───────────────────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
│ Write 3M rows             │ 19804 / 19963 │ 17178 / 17315 │ 18647 / 18657 │ 16613 / 16689 │
└───────────────────────────┴───────────────┴───────────────┴───────────────┴───────────────┘

Tests

Added additional test coverage

Signed-off-by: Robert Kruszewski <github@robertk.io>
robert3005 and others added 2 commits October 21, 2026 13:50
Add Vortex cases to TableReadBenchmark and TableWriterBenchmark next to
Parquet, ORC and Avro.

Speed up reading Vortex string and binary columns:
- Copy inline Arrow view values with two fixed-size stores, copy the
  validity bitmap in bulk and write offsets directly.
- Read string and binary values as slices of one heap copy of each
  column's data buffer instead of allocating per value.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Robert Kruszewski <github@robertk.io>
Reads:
- Keep each Vortex batch's native Arrow memory alive until the batch is
  released, and read top-level string and binary view columns lazily:
  the first access copies the views straight into one heap array.
  These columns are left out of the batch's Arrow root.
- Read fixed-width numbers straight from the data buffer and check null
  bits only when the vector holds a null.
- Prefetch the next batch on a shared pool, starting when the reader
  opens, so the files of a merge decode in parallel.

Writes:
- Size the next batch's Arrow vectors from the previous batch instead of
  regrowing them from empty.
- Read the field count once per row in ArrowFormatWriter, and skip
  setSafe's capacity checks for in-order string and binary values that
  fit the current buffers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@robert3005 robert3005 changed the title Upgrade vortex to 0.89.0 and rework integration for better performance [vortex] Upgrade vortex to 0.89.0 and rework integration for better performance Oct 21, 2026
@robert3005

Copy link
Copy Markdown
Author

@JingsongLi I have made a pr to bump vortex here and improve its performance quite a bit. I'm on the TSC of Vortex and worked on the Iceberg integration. Would love to get this merged so Paimon can benefit and also happy to have a chat anytime if you think there's features paimon could use in vortex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant