3 releases (breaking)
Uses new Rust 2024
| 0.3.0 | Apr 2, 2026 |
|---|---|
| 0.2.0 | Feb 24, 2026 |
| 0.1.0 | Feb 24, 2026 |
#2580 in Encoding
99KB
2K
SLoC
mcap2arrow
mcap2arrow is a Rust library that decodes MCAP channels/messages and exposes rows as Apache Arrow RecordBatch streams.
Installation
[dependencies]
mcap2arrow = "0.3.0"
What It Provides
- Reader API over MCAP files and memory maps
- Conversion from decoded message values to Arrow arrays/schema
- Decoder registration API for different schema/message encodings
- Built-in optional decoders via feature flags
Feature Flags
Default features:
protobufros2msgros2idl
Disable defaults to trim dependencies:
[dependencies]
mcap2arrow = { version = "0.3.0", default-features = false, features = ["protobuf"] }
Encoding pairs supported by built-in decoders:
| Schema encoding | Message encoding | Feature |
|---|---|---|
protobuf |
protobuf |
protobuf |
ros2msg |
cdr |
ros2msg |
ros2idl |
cdr |
ros2idl |
Minimal Usage
use std::path::Path;
use mcap2arrow::McapReader;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let reader = McapReader::builder().with_default_decoders().build();
reader.for_each_record_batch(Path::new("sample.mcap"), "/topic/name", |batch| {
println!("rows={}, cols={}", batch.num_rows(), batch.num_columns());
Ok(())
})?;
Ok(())
}
Related Crates in This Workspace
mcap2arrow-core: schema/value model and shared errorsmcap2arrow-arrow: Arrow conversion implementationmcap2arrow-protobuf: protobuf decodermcap2arrow-ros2msg: ROS 2.msgdecodermcap2arrow-ros2idl: ROS 2 IDL decoder
CLI
If you want a command-line interface, see transmcap:
Dependencies
~25MB
~429K SLoC