Apache Arrow is a cross-language development platform for in-memory data. It specifies a standardized language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware. It also provides computational libraries and zero-copy streaming messaging and interprocess communication…
C++ Java Python TypeScript Ruby C Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github ARROW-2907: [GitHub] Improve the first paragraph of "How to contribut… Jul 25, 2018
c_glib ARROW-3046: [GLib] Use rubyish method Aug 11, 2018
ci ARROW-3053: [Python] Add unit test for strided object conversion that… Aug 18, 2018
cpp ARROW-2971: [Python] Give some modules in arrow/python more descripti… Aug 18, 2018
dev ARROW-3067: [Packaging] Support dev/rc/release .deb/.rpm builds Aug 17, 2018
format ARROW-2944: [Format] Synchronize some metadata changes to columnar fo… Jul 31, 2018
go ARROW-3037: [Go] implement Null array Aug 14, 2018
integration ARROW-2779: [JS] stream reader fixes Jul 5, 2018
java ARROW-3068: [Packaging] Bump version to 0.11.0-SNAPSHOT Aug 17, 2018
js ARROW-2687: [JS] Example usage in README is outdated Aug 15, 2018
python ARROW-1968: [C++/Python] Add basic unit tests for ORC reader Aug 18, 2018
ruby ARROW-3027: [Ruby] Stop "git tag" by "rake release" Aug 9, 2018
rust ARROW-3088: [Rust] Use internal `Result<T>` type instead of `Result<T… Aug 20, 2018
site ARROW-3005: [Release] Update website, draft simple release blog post … Aug 7, 2018
.gitignore ARROW-2724: [Packaging] Determine whether all the expected artifacts … Jul 10, 2018
.readthedocs.yml ARROW-1142: [C++] Port over compression toolchain and interfaces from… Jun 23, 2017
.travis.yml ARROW-3083: [CI] Use higher clone depth to pick up tags [skip appveyor] Aug 20, 2018
CHANGELOG.md [Release] Update CHANGELOG.md for 0.10.0 Aug 2, 2018
LICENSE.txt ARROW-2634: [Go] Add Go license details to LICENSE.txt Jul 7, 2018
NOTICE.txt ARROW-1630: [Serialization] Support Python datetime objects Oct 12, 2017
README.md Add Ruby to README.md Jun 9, 2018
appveyor.yml ARROW-2992: [CI] Remove some AppVeyor build configurations Aug 7, 2018
header ARROW-259: Use Flatbuffer Field type instead of MaterializedField Aug 18, 2016


Apache Arrow

Build Status travis build status Code Coverage codecov.io code coverage

Powering In-Memory Analytics

Apache Arrow is a development platform for in-memory analytics. It contains a set of technologies that enable big data systems to process and move data fast.

Major components of the project include:

Arrow is an Apache Software Foundation project. Learn more at arrow.apache.org.

What's in the Arrow libraries?

The reference Arrow libraries contain a number of distinct software components:

  • Columnar vector and table-like containers (similar to data frames) supporting flat or nested types
  • Fast, language agnostic metadata messaging layer (using Google's Flatbuffers library)
  • Reference-counted off-heap buffer memory management, for zero-copy memory sharing and handling memory-mapped files
  • Low-overhead IO interfaces to files on disk, HDFS (C++ only)
  • Self-describing binary wire formats (streaming and batch/file-like) for remote procedure calls (RPC) and interprocess communication (IPC)
  • Integration tests for verifying binary compatibility between the implementations (e.g. sending data from Java to C++)
  • Conversions to and from other in-memory data structures

Getting involved

Even if you do not plan to contribute to Apache Arrow itself or Arrow integrations in other projects, we'd be happy to have you involved:

How to Contribute

We prefer to receive contributions in the form of GitHub pull requests. Please send pull requests against the github.com/apache/arrow repository.

If you are looking for some ideas on what to contribute, check out the JIRA issues for the Apache Arrow project. Comment on the issue and/or contact dev@arrow.apache.org with your questions and ideas.

If you’d like to report a bug but don’t have time to fix it, you can still post it on JIRA, or email the mailing list dev@arrow.apache.org

To contribute a patch:

  1. Break your work into small, single-purpose patches if possible. It’s much harder to merge in a large change with a lot of disjoint features.
  2. Create a JIRA for your patch on the Arrow Project JIRA.
  3. Submit the patch as a GitHub pull request against the master branch. For a tutorial, see the GitHub guides on forking a repo and sending a pull request. Prefix your pull request name with the JIRA name (ex: https://github.com/apache/arrow/pull/240).
  4. Make sure that your code passes the unit tests. You can find instructions how to run the unit tests for each Arrow component in its respective README file.
  5. Add new unit tests for your code.

Thank you in advance for your contributions!