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)

βœ“ (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/W

R/W

R/W

R/W

ORC

R/W

R (2)

Parquet

R/W

R (3)

R/W

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)