Official Erlang implementation of Apache Arrow

Clone this repo:
  1. bfb2b49 chore: Add Issue Template (#101) by Benjamin Philip · 2 days ago main
  2. 7c26382 chore: Use swatinem/rust-cache action for caching Rust (#102) by Benjamin Philip · 3 days ago
  3. b42fa40 chore: Add pull request template (#100) by Benjamin Philip · 3 days ago
  4. 27143a8 chore: bump erlef/setup-beam from 1.24.0 to 1.24.1 (#63) by dependabot[bot] · 4 days ago
  5. 1447e34 chore: Fix PR comment message grammar (#99) by Benjamin Philip · 4 days ago

arrow-erlang

Erlang implementation of the Apache Arrow in-memory columnar format.

As of right now, arrow-erlang only provides serialization (write) of Erlang data structures into to Arrow. Support for deserialization (read) will be added soon.

We provide support for the Apache Arrow Columnar Format and the Apache Arrow IPC Format. Support for Flight RPC, Flight SQL, as well conversion of Arrow into other formats like Apache Parquet, Apache Avro, CSV and JSON is out of the scope of the project.

Build

In addition to an Erlang installation, you will need a Rust installation with cargo. You can then add the following to your rebar.config:

{arrow, {git, "https://github.com/apache/arrow-erlang.git"}}

And compile!

$ rebar3 compile

Format Support

This implementation is still a work in progress. As mentioned earlier, we do not have read functionality as of right now, only write.

We support the following primitive data types:

  • Int 8/16/32/64
  • UInt 8/16/32/64
  • Float 32/64
  • Fixed Size Binary
  • Binary
  • Large Binary

and the following nested data types:

  • Fixed Size List
  • List
  • Large List

support for the other data types (both primitive and nested) will be added soon.

IPC Format Support

Currently we support all the 3 “formats”:

  • Encapsulated Message Format
  • Stream Format
  • File Format

and the following message types:

  • Schema
  • RecordBatch

Support for the following will be added shortly:

  • Buffer compression
  • Endianness conversion
  • Custom schema metadata

Support for the following will be added post v0.1.0:

  • Dictionaries
  • Replacement dictionaries
  • Delta dictionaries
  • Tensors
  • Sparse Tensors