apache / apache/arrow-rs

arrow-ipc: Reduce writer allocations for dictionary batches

Open
#10,127 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
3.6k
Forks
1.3k
Avg merge
2d 14h
Merged PRs (30d)
167

Description

### Is your feature request related to a problem or challenge?

IPC writer code used to stage ipc messages and array buffers in intermediate storage before writing them out to the final destination (writer or file). #10044 introduced an optimization to avoid this intermediate staging for record batch ipc bodies when compression was not present.

We can apply the same optimization for dictionary batches which are basically a special case of record batch messages.

### Describe the solution you'd like

Collect references to dictionary batch values ahead of time and do the writes directly to the writer when we don't have to apply compression.

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Contributor guide

Open the contributing guide

Research direction

Start with the IPC writer code and the record-batch optimization introduced in #10044, then locate the corresponding dictionary-batch write path. Confirm how dictionary values are collected and how compression changes the path; done means uncompressed dictionary batches write directly to the destination without intermediate staging while compressed writes retain their required behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
data-engineering, performance
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.