$ arrow-flight

v57.2.0

Apache Arrow Flight

Downloads: 7.7M
Recent: 1.9M
Versions: 95
Updated: January 11, 2026

Latest Update Summary

Crate

Name: arrow-flight New version: 57.0.0 Release date: 2025-10-23T11:00:57Z

Crate readme

Short description Native Rust implementation of Apache Arrow and Apache Parquet

Long description This repository contains the Rust implementation of Apache Arrow, an in-memory columnar format, and Apache Parquet, a columnar file format. It includes core functionality for memory layout, arrays, and low-level computations in the arrow crate. The arrow-flight crate supports the Arrow-Flight IPC protocol, while the parquet crate handles the Parquet file format. A derive crate, parquet_derive, is available for generating RecordWriter/RecordReader for simple structs. The project follows Semantic Versioning and releases approximately monthly, with major versions released at most quarterly. It maintains a rolling MSRV policy, ensuring compatibility with stable Rust and updating the MSRV with a minimum of six months' notice.

Features • arrow • arrow-flight • parquet • parquet_derive • rolling MSRV

Code Examples Add to Cargo.toml

 arrow = "..."
parquet = "..."
arrow-flight = "..."
parquet_derive = "..."

Core functionality (memory layout, arrays, low level computations)

 use arrow::array::ArrayData;
use arrow::datatypes::{Field, Schema};
use arrow::record_batch::RecordBatch;

fn main() {
    // Example schema
    let schema = Schema::new(vec![
        Field::new("city", arrow::datatypes::DataType::Utf8, false),
        Field::new("temperature", arrow::datatypes::DataType::Float64, false),
    ]);

    // Example arrays
    let cities = arrow::array::StringArray::from(vec!["New York", "London", "Tokyo"]);
    let temps = arrow::array::Float64Array::from(vec![10.5, 8.2, 15.1]);

    // Create a RecordBatch
    let batch = RecordBatch::from_arrays(&[cities.into_array(), temps.into_array()], &schema).unwrap();

    println!("{}", batch);
}

Support for Parquet columnar file format

 use arrow::datatypes::{Field, Schema};
use arrow::record_batch::RecordBatch;
use parquet::arrow::ArrowWriter;
use std::io::Cursor;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let schema = Schema::new(vec![
        Field::new("col1", arrow::datatypes::DataType::Int32, false),
        Field::new("col2", arrow::datatypes::DataType::Utf8, false),
    ]);

    let batch = RecordBatch::from_arrays(
        &[
            arrow::array::Int32Array::from(vec![1, 2, 3]).into_array(),
            arrow::array::StringArray::from(vec!["a", "b", "c"]).into_array(),
        ],
        &schema,
    )?;

    let mut buf = Cursor::new(Vec::new());

    let mut writer = ArrowWriter::new(&mut buf, schema.into(), None)?;
    writer.write(&[&batch])?;
    writer.close()?;

    println!("Parquet data written successfully.");
    Ok(())
}

Support for Arrow-Flight IPC protocol

 use arrow_flight::flight_describer::FlightEndpoint;
use arrow_flight::Ticket;

fn main() {
    let ticket = Ticket::new("example-query");
    let endpoint = FlightEndpoint::new(ticket, None);

    println!("Flight endpoint created for ticket: {:?}", endpoint.ticket());
}

Derive RecordWriter/RecordReader for arbitrary, simple structs

 use parquet_derive::ParquetRecordHelper;

#[derive(Debug, ParquetRecordHelper)]
struct MyStruct {
    id: i32,
    name: String,
}

fn main() {
    let record = MyStruct { id: 1, name: "test".to_string() };
    println!("Derived ParquetRecordHelper for: {:?}", record);
}

Linkshttps://crates.io/crates/arrowhttps://crates.io/crates/parquethttps://crates.io/crates/parquet-derivehttps://crates.io/crates/arrow-flighthttps://docs.rs/arrow/latesthttps://docs.rs/parquet/latesthttps://docs.rs/arrow-flight/latesthttps://docs.rs/parquet-derive/latesthttps://arrow.apache.org/rusthttps://github.com/apache/arrow-rs-object-storehttps://semver.org/https://github.com/apache/arrow-rs/issues/7835https://github.com/apache/arrow-rs/milestone/3https://github.com/apache/arrow-rs/milestone/5https://github.com/apache/arrow-rs/milestone/6https://github.com/apache/arrow-rs/issues/5368https://github.com/apache/arrow-rs/blob/main/CONTRIBUTING.md#breaking-changeshttps://github.com/apache/arrow-rs/issues/6737https://crates.io/crates/object-storehttps://crates.io/crates/datafusionhttps://crates.io/crates/ballistahttps://crates.io/crates/parquet_opendalhttps://github.com/apache/datafusion/blob/main/README.mdhttps://github.com/apache/datafusion-ballista/blob/main/README.mdhttps://github.com/apache/arrow-rs/blob/main/integrations/parquet/README.mdhttps://github.com/apache/arrow-rs-object-store/blob/main/README.mdhttps://arrow.apache.org/community/https://s.apache.org/slack-invitehttps://github.com/apache/arrow-rs/discussionshttps://discord.gg/YAb2TdazKQhttps://github.com/apache/arrow-rs/issueshttps://www.rust-lang.org/https://github.com/apache/arrow-rs/tree/57.0.0https://github.com/apache/arrow-rs/compare/56.2.0...57.0.0

https://api.github.com/repos/apache/arrow-rs/releases/256648414

Release info

Release version: 57.0.0

Release description This release introduces significant changes and enhancements across the Arrow Rust project. A major breaking change involves the consistent use of Arc<FileEncryptionProperties> throughout, aiming to reduce the size of ParquetMetadata and avoid unnecessary copying when encryption is enabled. The arrow-avro crate has been added, bringing support for Avro data format, including new crates and roundtrip tests. Enhancements to the DataType display formatting improve readability for types like RunEndEncoded, Map, ListView, and LargeListView. The Parquet module refactors its Thrift-related code, improving efficiency and organization by using a custom thrift parser and storing encodings as a bitmask. Several bugs have been fixed, including issues with decimal casting, handling of old timestamp formats, and memory consumption in the compressed writer. Performance improvements are noted in areas such as zstd compression context reuse and SIMD optimizations for byte builders. Documentation has been updated, and the project has migrated to Rust 2024 edition.

Code Examples

Minor update: 57.1.0 → 57.2.0

$ DOWNLOADS TREND

5.7M7.7M

$ VERSION HISTORY

v57.2.0January 11, 2026
v57.1.0November 24, 2025
v57.0.0October 23, 2025
v56.2.0September 23, 2025

$ LINKS

$ INSTALL

cargo add arrow-flight

Or add to Cargo.toml: arrow-flight = "57.2.0"