Open-Source Wikis

/

Apache Arrow

/

Reference

/

Dependencies

apache/arrow

Dependencies

Third-party libraries Arrow uses, organized by how they're consumed: bundled (built from source as part of the Arrow build), system (linked from the host), or vendored (source code copied into the Arrow tree).

Configuration

Each dependency has a *_SOURCE CMake variable that selects how to find or build it. Values are:

  • BUNDLED — fetch and build from source via ExternalProject.
  • SYSTEM — find via find_package / pkg_check_modules.
  • AUTO — try system first, fall back to bundled.

Defaults vary; the canonical list is in cpp/cmake_modules/ThirdpartyToolchain.cmake.

Core C++ dependencies

These are needed for the basic libarrow.so:

Library Purpose *_SOURCE flag Notes
Boost Headers (parts of boost::process, boost::filesystem) Boost_SOURCE Declining footprint; many uses migrated to C++17
FlatBuffers IPC schema (format/*.fbs) FlatBuffers_SOURCE Version pinned because Arrow vendors generated headers
jemalloc Memory pool backend jemalloc_SOURCE Optional; falls back to system allocator
OpenSSL TLS for Flight, S3, Parquet encryption OpenSSL_SOURCE System on most platforms
zlib Compression ZLIB_SOURCE Used by gzip codec
Snappy Compression Snappy_SOURCE Used by Parquet, IPC
ZSTD Compression zstd_SOURCE Used by Parquet, IPC
LZ4 Compression lz4_SOURCE Used by Parquet, IPC
Brotli Compression Brotli_SOURCE Optional
BZ2 Compression BZip2_SOURCE Optional
RapidJSON JSON parsing RapidJSON_SOURCE Header-only; vendored
utf8proc UTF-8 case folding/normalization utf8proc_SOURCE Optional but enabled by default
re2 Regex re2_SOURCE Used by Gandiva and string kernels
xsimd Portable SIMD xsimd_SOURCE Header-only; recently introduced
google-double-conversion Float ↔ string double_conversion_SOURCE Vendored

Optional component dependencies

Pulled in only when the matching ARROW_* toggle is on:

Component Library Purpose
ARROW_PARQUET Apache Thrift parquet.thrift schema
ARROW_FLIGHT gRPC + Protobuf RPC framework
ARROW_FLIGHT_SQL gRPC + Protobuf RPC framework + SQL extension
ARROW_GANDIVA LLVM JIT compiler
ARROW_S3 AWS C++ SDK S3 filesystem
ARROW_GCS google-cloud-cpp GCS filesystem
ARROW_AZURE Azure C++ SDK Azure Blob Storage filesystem
ARROW_HDFS libhdfs (loaded dynamically) HDFS filesystem
ARROW_ORC Apache ORC C++ ORC adapter
ARROW_CUDA CUDA toolkit GPU support
ARROW_OPENTELEMETRY OpenTelemetry C++ Tracing
ARROW_WITH_UCX UCX Flight UCX transport
ARROW_WITH_BACKTRACE libbacktrace / libdw Stack traces in Status
ARROW_PYTHON Python + NumPy C++ helpers PyArrow links against

The full list of toggles is in cpp/CMakeLists.txt.

Vendored libraries

Lives in cpp/src/arrow/vendored/:

  • xxhash/ — xxHash 0.8.x.
  • datetime/ — Howard Hinnant's date library.
  • fast_float/ — Daniel Lemire's fast_float parser.
  • double-conversion/ — Google's double-conversion (re-vendored even though there's a dependency, for consistent behavior).
  • pcg/ — PCG random number generators.
  • base64/, random/, string_view/ — small headers.
  • portable-snippets/, ProducerConsumerQueue/ — concurrency helpers.

Vendored code is built as part of libarrow. Each subdirectory has its own LICENSE file.

Conda environment files

Each language has a ci/conda_env_*.txt file listing the conda packages needed for the build:

  • ci/conda_env_cpp.txt — C++ build deps.
  • ci/conda_env_python.txt — PyArrow build deps.
  • ci/conda_env_r.txt — R build deps.
  • ci/conda_env_gandiva.txt (and _win.txt) — Gandiva build deps including clangdev and llvmdev.
  • ci/conda_env_archery.txtarchery CLI deps.
  • ci/conda_env_crossbow.txt — Crossbow dispatcher deps.
  • ci/conda_env_sphinx.txt — Documentation build deps.
  • ci/conda_env_unix.txt — Common Unix tooling.

These are the source of truth for what version of each tool is expected to work.

Python dependencies

python/pyproject.toml lists the build deps. Runtime deps are minimal:

  • numpy (always required for some converters).
  • pandas (optional; only for to_pandas() / from_pandas()).

Build-time:

  • Cython, numpy, setuptools, setuptools-scm, cffi (for the CFFI module), meson/scikit-build for the extension build.

Test-time deps live in python/requirements-test.txt, requirements-wheel-test.txt.

R dependencies

r/DESCRIPTION declares CRAN deps. The Imports: section pulls in assertthat, bit64, methods, purrr, R6, rlang, stats, tidyselect, vctrs. The Suggests: section pulls in dplyr, dbplyr, duckdb, lubridate, pkgload, reticulate, rmarkdown, stringi, stringr, testthat, tibble, withr.

For the bundled libarrow build, r/tools/nixlibs.R fetches Arrow C++ source and builds it.

Ruby dependencies

ruby/Gemfiles pull in gobject-introspection, pkg-config, test-unit. The actual GLib bindings are loaded at runtime via introspection; ruby/red-arrow/red-arrow.gemspec declares the C-GLib version requirement.

C-GLib dependencies

c_glib/Brewfile and c_glib/vcpkg.json list the system deps. The build needs:

  • glib2 (≥2.58)
  • gobject-introspection
  • meson
  • vala (optional, for Vala bindings)
  • gtk-doc (optional, for the reference manual)

License compatibility

Arrow is Apache 2.0. All bundled and vendored dependencies use compatible licenses (MIT, BSD-3-Clause, Apache 2.0). The LICENSE.txt and NOTICE.txt at the repo root list the licenses of bundled and vendored components. The cpp/build-support/release/rat_exclude_files.txt lists files that the Apache RAT (Release Audit Tool) is allowed to skip during release verification.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Dependencies – Apache Arrow wiki | Factory