Implementation Status

The following tables summarize the features available in the various official Arrow libraries. Unless otherwise stated, the Python, R, Ruby and C/GLib libraries follow the C++ Arrow library.

Data Types

Data type (primitive)

C++

Java

Go

JavaScript

C#

Rust

Julia

Null

Boolean

Int8/16/32/64

UInt8/16/32/64

Float16

Float32/64

Decimal128

Decimal256

Date32/64

Time32/64

Timestamp

Duration

Interval

Fixed Size Binary

Binary

Large Binary

Utf8

Large Utf8

Data type (nested)

C++

Java

Go

JavaScript

C#

Rust

Julia

Fixed Size List

List

Large List

Struct

Map

Dense Union

Sparse Union

Data type (special)

C++

Java

Go

JavaScript

C#

Rust

Julia

Dictionary

✓ (1)

✓ (1)

✓ (1)

Extension

Notes:

  • (1) Nested dictionaries not supported

See also

The Arrow Columnar Format specification.

IPC Format

IPC Feature

C++

Java

Go

JavaScript

C#

Rust

Julia

Arrow stream format

Arrow file format

Record batches

Dictionaries

Replacement dictionaries

Delta dictionaries

✓ (1)

Tensors

Sparse tensors

Buffer compression

✓ (3)

Endianness conversion

✓ (2)

Custom schema metadata

Notes:

  • (1) Delta dictionaries not supported on nested dictionaries

  • (2) Data with non-native endianness can be byte-swapped automatically when reading.

  • (3) LZ4 Codec currently is quite inefficient. ARROW-11901 tracks improving performance.

Flight RPC

Flight RPC Feature

C++

Java

Go

JavaScript

C#

Rust

Julia

gRPC transport

✓ (1)

gRPC + TLS transport

RPC error codes

Authentication handlers

✓ (2)

Custom client middleware

Custom server middleware

Notes:

  • (1) No support for handshake or DoExchange.

  • (2) Support using AspNetCore authentication handlers.

See also

The Arrow Flight RPC specification.

C Data Interface

Feature

C++

Python

R

Rust

Go

Java

C/GLib

Ruby

Schema export

Array export

Schema import

Array import

See also

The C Data Interface specification.

C Stream Interface (experimental)

Feature

C++

Python

Go

C/GLib

Ruby

Stream export

Stream import

See also

The C Stream Interface specification.

Third-Party Data Formats

Format

C++

Java

Go

JavaScript

C#

Rust

Julia

Avro

R

CSV

R

R/W

R/W

R/W

ORC

R/W

R (2)

Parquet

R/W

R (3)

R/W (1)

Notes:

  • R = Read supported

  • W = Write supported

  • (1) Nested read/write not supported.

  • (2) Through JNI bindings. (Provided by org.apache.arrow.orc:arrow-orc)

  • (3) Through JNI bindings to Arrow C++ Datasets. (Provided by org.apache.arrow:arrow-dataset)