skillfed

pyorc

Python module for reading and writing Apache ORC file format.

pyorc v0.11.0 357.2K downloads/30d#7,273 on PyPI70
Permissive license Apache-2.0 Active released

What it is and what it does

PyORC is a Python binding to Apache ORC's C++ API for reading and writing ORC (Optimized Row Columnar) files, a columnar storage format commonly used in data warehousing and analytics. It provides a straightforward, csv-module-like interface for streaming ORC data in and out of Python applications. The package wraps compiled C++ code, so installation uses pre-built wheels for Python 3.10–3.12 on standard platforms; it depends on tzdata and backports.zoneinfo for timezone handling.

The library is in alpha status but actively maintained, with recent releases and a small but engaged user base. It is suitable for applications that need to integrate ORC file I/O into Python data pipelines, particularly where compatibility with Apache Hadoop ecosystems or existing ORC infrastructure is required.

Use it for:

  • Reading ORC files exported from Hive, Spark, or other Apache Hadoop ecosystem tools into Python for analysis.
  • Writing Python data structures to ORC format for storage or transfer to downstream Hadoop-based systems.
  • Building ETL pipelines that consume or produce ORC columnar data without intermediate format conversion.
  • Integrating ORC I/O into data validation or quality-assurance workflows that run in Python.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

PyORC reads and writes Apache ORC files using Python, wrapping the Apache ORC C++ API and providing an interface similar to Python's csv module.

Yes, if you need to read or write ORC files in Python and are working with Python 3.10 or newer. The permissive Apache-2.0 license, active maintenance, zero known vulnerabilities, and pre-built wheels for common platforms make it a low-friction choice. The alpha status and small user base mean less community documentation, so verify that ORC 1.7 support and the package's feature set match your use case before committing to a production dependency.

Install

pyorc on PyPI

pip

pip install pyorc

uv

uv add pyorc

poetry

poetry add pyorc

Installing pyorc

Before you install

Medium install friction due to compiled C++ bindings; wheels are pre-built for Python 3.10–3.12 on common platforms (macOS, Linux, Windows), reducing build requirements. Repository is active with a recent release (125 days ago) and steady maintenance.

License in practice

Apache-2.0 is permissive; you may use, modify, and distribute pyorc and derivative works freely, provided you include a copy of the license and note any changes.

Quickstart

import pyorc

with open("./data.orc", "rb") as data:
    reader = pyorc.Reader(data)
    for row in reader:
        print(row)

Requires Python 3.10 or newer and ORC 1.7; compiled wheels are available for common platforms but may require a C++ runtime on some systems.

Verify before relying

  • Whether the package handles all ORC 1.7 features or only a subset of the specification.
  • Performance characteristics and memory usage for large ORC files.
  • Whether schema inference is supported when reading files without explicit schema specification.

Package facts

License Apache-2.0 (permissive)
Python support supports the current Python release (<4.0,>=3.6)
Install friction medium — platform-specific wheel
Runtime dependencies 2 — tzdata, backports.zoneinfo
Maintenance actively maintained — 125 days since the last release
Last repo commit
First released
Downloads 357,185/month — #7,273 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pyorc-0.11.0-cp310-cp310-macosx_10_13_universal2.whl; pyorc-0.11.0-cp310-cp310-macosx_10_13_x86_64.whl; pyorc-0.11.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl; pyorc-0.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; pyorc-0.11.0-cp310-cp310-musllinux_1_2_aarch64.whl; pyorc-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl; pyorc-0.11.0-cp310-cp310-win_amd64.whl; pyorc-0.11.0-cp311-cp311-macosx_10_13_universal2.whl; pyorc-0.11.0-cp311-cp311-macosx_10_13_x86_64.whl; pyorc-0.11.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl; pyorc-0.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; pyorc-0.11.0-cp311-cp311-musllinux_1_2_aarch64.whl; pyorc-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl; pyorc-0.11.0-cp311-cp311-win_amd64.whl; pyorc-0.11.0-cp312-cp312-macosx_10_13_universal2.whl; pyorc-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl; pyorc-0.11.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl; pyorc-0.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; pyorc-0.11.0-cp312-cp312-musllinux_1_2_aarch64.whl; pyorc-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl

Keywords: python3, orc, apache-orc

Development Status :: 3 - AlphaIntended Audience :: DevelopersIntended Audience :: System AdministratorsProgramming Language :: C++Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14

Tags

orc file reader writerapache orc pythonorc format serializationcolumnar data format pythonorc data io
columnar-storagedata-serialization

More Database packages