63 releases (31 major breaking)

Uses new Rust 2021

31.0.0 Jan 16, 2023
30.0.1 Jan 8, 2023
29.0.0 Dec 12, 2022
28.0.0 Nov 28, 2022
0.3.0 May 5, 2018

#7 in Database interfaces

Download history 12514/week @ 2022-10-07 12419/week @ 2022-10-14 15461/week @ 2022-10-21 15267/week @ 2022-10-28 17460/week @ 2022-11-04 17884/week @ 2022-11-11 14366/week @ 2022-11-18 16083/week @ 2022-11-25 15808/week @ 2022-12-02 14368/week @ 2022-12-09 13812/week @ 2022-12-16 9805/week @ 2022-12-23 11913/week @ 2022-12-30 16099/week @ 2023-01-06 17629/week @ 2023-01-13 18152/week @ 2023-01-20

66,256 downloads per month
Used in 76 crates (37 directly)

Apache-2.0

3MB
62K SLoC

Apache Parquet Official Native Rust Implementation

crates.io docs.rs

This crate contains the official Native Rust implementation of Apache Parquet, which is part of the Apache Arrow project.

See crate documentation for examples and the full API.

Rust Version Compatibility

This crate is tested with the latest stable version of Rust. We do not currently test against other, older versions of the Rust compiler.

Versioning / Releases

The arrow crate follows the SemVer standard defined by Cargo and works well within the Rust crate ecosystem.

However, for historical reasons, this crate uses versions with major numbers greater than 0.x (e.g. 19.0.0), unlike many other crates in the Rust ecosystem which spend extended time releasing versions 0.x to signal planned ongoing API changes. Minor arrow releases contain only compatible changes, while major releases may contain breaking API changes.

Feature Flags

The parquet crate provides the following features which may be enabled in your Cargo.toml:

  • arrow (default) - support for reading / writing arrow arrays to / from parquet
  • async - support async APIs for reading parquet
  • json - support for reading / writing json data to / from parquet
  • brotli (default) - support for parquet using brotli compression
  • flate2 (default) - support for parquet using gzip compression
  • lz4 (default) - support for parquet using lz4 compression
  • zstd (default) - support for parquet using zstd compression
  • snap (default) - support for parquet using snappy compression
  • cli - parquet CLI tools
  • experimental - Experimental APIs which may change, even between minor releases

Parquet Feature Status

  • All encodings supported
  • All compression codecs supported
  • Read support
    • Primitive column value readers
    • Row record reader
    • Arrow record reader
    • Async support (to Arrow)
  • Statistics support
  • Write support
    • Primitive column value writers
    • Row record writer
    • Arrow record writer
    • Async support
  • Predicate pushdown
  • Parquet format 4.0.0 support

Support for wasm32-unknown-unknown target

It's possible to build parquet for the wasm32-unknown-unknown target, however not all the compression features are currently unsupported due to issues with the upstream crates. In particular, the zstd and lz4 features may have compilation issues. See issue #180.

cargo build -p parquet --target wasm32-unknown-unknown --no-default-features --features cli,snap,flate2,brotli

License

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.

Dependencies

~13–20MB
~386K SLoC