Skip to content

[C++] Add a Flatbuffer metadata type that supports array data over 2^31 - 1 elements #16285

@asfimport

Description

@asfimport

Users of Arrow C++ have reported needing to store large arrays using our shared memory IPC machinery. While data over 2^31 - 1 elements is "out of spec" as far as what it means to "implement Arrow", it would be useful to have a "LargeRecordBatch" type that permits storing large arrays. Other Arrow implementations in general will not need to support reading and writing this data – this is closely related to the tensor discussion in ARROW-550.

struct LargeFieldNode {
  length: long;
  null_count: long;
}

table LargeRecordBatch {
  length: long;
  nodes: [LargeFieldNode];
  buffers: [Buffer];
}

An initial implementation of this will be marked experimental so that we can get the code into the hands of users (like the Ray project https://github.com/ray-project/ray) in case there's some ongoing discussion to be had about handling very large vectors/arrays.

Reading and writing this metadata should be achievable without a huge amount of code duplication, I will see what I can do.

Reporter: Wes McKinney / @wesm
Assignee: Wes McKinney / @wesm

Note: This issue was originally created as ARROW-661. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions