{
  "aliases": [
    "Arrow",
    "PyArrow",
    "Arrow Flight",
    "ADBC"
  ],
  "workflows": [
    "Read a Parquet lake with PyArrow and hand tables to DuckDB or Polars",
    "Serve query results over Arrow Flight to analysts",
    "Replace ODBC/JDBC with ADBC drivers for columnar fetches",
    "Exchange DataFrames between Python, R and Rust processes"
  ],
  "advantages": [
    "Eliminates serialization between analytical tools",
    "Apache 2.0 and foundation governance",
    "Reference implementations in many languages",
    "Widely adopted as the de facto interchange standard"
  ],
  "limitations": [
    "A format and library set, not a database or server",
    "Columnar layout is poor for row-level updates",
    "Cross-language version compatibility must be managed",
    "PyArrow wheels are large and platform-specific"
  ],
  "prerequisites": [
    "A language runtime with an Arrow implementation (e.g. pip install pyarrow)"
  ],
  "audiences": [
    "Data engineers",
    "Quantitative researchers",
    "Developers of databases and data tools"
  ],
  "alternatives": [
    "apache-parquet",
    "polars",
    "pandas",
    "duckdb",
    "apache-datafusion"
  ],
  "tags": [
    "apache-arrow",
    "columnar",
    "parquet",
    "open-source",
    "python",
    "rust",
    "interoperability"
  ],
  "use_cases": [
    "query-parquet-files",
    "analyze-intraday-data",
    "exchange-data-between-tools"
  ],
  "operating_systems": [
    "macos",
    "linux",
    "windows"
  ],
  "deployment_models": [
    "embedded"
  ],
  "integrations": [
    "DuckDB",
    "Polars",
    "pandas",
    "Apache Spark",
    "Apache DataFusion",
    "Snowflake",
    "BigQuery",
    "R (arrow package)"
  ],
  "data_formats": [
    "Arrow IPC",
    "Parquet",
    "CSV",
    "JSON",
    "ORC",
    "Feather"
  ],
  "languages": [
    "C++",
    "Python",
    "Rust",
    "Java",
    "Go",
    "C#",
    "JavaScript",
    "R",
    "Ruby",
    "Swift",
    "Julia"
  ],
  "self_hostable": true,
  "discovery_method": "editorial-research",
  "depth": "deep",
  "editorial_status": "reviewed",
  "visibility": "public",
  "featured": true,
  "author": "batch-D",
  "slug": "apache-arrow",
  "name": "Apache Arrow",
  "vendor": {
    "name": "Apache Software Foundation",
    "slug": "apache-software-foundation",
    "website": "https://www.apache.org/"
  },
  "homepage_url": "https://arrow.apache.org/",
  "docs_url": "https://arrow.apache.org/docs/",
  "repo_url": "https://github.com/apache/arrow",
  "license_url": "https://github.com/apache/arrow/blob/main/LICENSE.txt",
  "product_type": "specification",
  "product_status": "active",
  "summary": "Language-independent columnar in-memory format and libraries that let DuckDB, Polars, pandas, Spark and databases exchange tables without copying",
  "description": "Apache Arrow is an Apache Software Foundation project that defines a language-independent columnar memory format for tabular data together with libraries that implement it in C++, Python (PyArrow), Rust, Java, Go, C#, JavaScript, R, Ruby, Swift and others. Because every implementation lays out arrays identically in memory, systems can hand each other tables by pointer rather than by serializing and parsing, which is why Arrow has become the interchange layer between DuckDB, Polars, pandas, Spark, DataFusion, Snowflake and many databases and file readers.\n\nBeyond the format, the project specifies the Arrow IPC stream and file formats for moving record batches over sockets or disk, the Arrow Flight RPC protocol and Flight SQL for high-throughput data services, ADBC as a columnar replacement for ODBC and JDBC drivers, and the C Data Interface for zero-copy sharing between libraries in the same process. The C++ library includes Parquet, CSV, JSON and ORC readers and writers, dataset scanning over partitioned directories and object stores, and the Acero compute engine; PyArrow exposes these to Python and backs the Arrow-native dtypes in pandas.\n\nFor a researcher the practical effect is that a Parquet archive read with PyArrow can be queried by DuckDB, transformed by Polars and plotted from pandas with few or no conversions. Arrow is released under Apache 2.0. Its limits are those of a format and toolkit rather than a product: there is no server or storage to deploy, in-memory layouts favor analytical scans over row-at-a-time updates, and library versions across languages must be kept compatible when sharing data through the C interface.",
  "capabilities": [
    "Standardized columnar in-memory layout for tables and nested types",
    "IPC stream and file formats for record batches",
    "Arrow Flight and Flight SQL RPC protocols",
    "ADBC database connectivity API",
    "C Data Interface for zero-copy in-process sharing",
    "Parquet, CSV, JSON and ORC readers and writers (C++/PyArrow)",
    "Dataset API for partitioned files on local disk and object storage",
    "Implementations in more than ten languages"
  ],
  "comparison_notes": "Apache Parquet is the on-disk columnar companion to Arrow's in-memory format; the two are designed to convert efficiently and are maintained by overlapping communities. Polars and DataFusion are engines built directly on Arrow memory, while pandas adopted Arrow-backed dtypes alongside its NumPy legacy. DuckDB has its own internal vectors but imports and exports Arrow without copies. None of these replace Arrow; they are consumers of it.",
  "categories": [
    {
      "slug": "data-catalogs",
      "primary": true
    },
    {
      "slug": "dataframes-arrays"
    },
    {
      "slug": "analytics-engines"
    }
  ],
  "execution_modes": [
    "local"
  ],
  "interfaces": [
    "library",
    "sdk"
  ],
  "source_model": "open-source",
  "license_spdx": "Apache-2.0",
  "pricing_model": [
    "open-source",
    "free"
  ],
  "sources": [
    {
      "url": "https://arrow.apache.org/",
      "type": "official_site",
      "supports": [
        "name",
        "summary",
        "languages"
      ],
      "checked_at": "2026-11-02",
      "title": "Apache Arrow"
    },
    {
      "url": "https://arrow.apache.org/docs/",
      "type": "official_docs",
      "supports": [
        "capabilities",
        "data_formats"
      ],
      "checked_at": "2026-11-02",
      "title": "Apache Arrow Documentation"
    },
    {
      "url": "https://arrow.apache.org/docs/format/Columnar.html",
      "type": "official_docs",
      "supports": [
        "product_type",
        "capabilities"
      ],
      "checked_at": "2026-11-02",
      "title": "Arrow Columnar Format specification"
    },
    {
      "url": "https://github.com/apache/arrow/blob/main/LICENSE.txt",
      "type": "license_page",
      "supports": [
        "license_spdx",
        "source_model"
      ],
      "checked_at": "2026-11-02",
      "title": "Apache Arrow LICENSE.txt"
    },
    {
      "url": "https://github.com/apache/arrow",
      "type": "repository",
      "supports": [
        "repo_url"
      ],
      "checked_at": "2026-11-02",
      "title": "apache/arrow"
    }
  ],
  "confidence": "high"
}
