File Formats

ORC

Apache ORC (Optimized Row Columnar)

Situational Foundation Apache Software Foundation Since 2013

Judgement: Situational

Pick if you're in Hive/Tez territory; otherwise Parquet wins.

Columnar file format created for the Hive ecosystem. Strong compression and ACID support inside Hive.

Less common in greenfield projects today — Parquet has won most workloads — but still pervasive in big-data installations.

Why it counts as a standard

ORC's on-disk format is an open Apache spec with independent readers in Java, C++, and Rust. Hive, Spark, Trino, Presto and others read and write the same files because they target the format, not a single library. The file format is the standard surface.

Example

ORC is read back-to-front: the postscript at the tail points at the footer, which indexes the stripes.

ORC                           <- 3-byte magic at the head
  Stripe 0  [index streams][data streams][stripe footer]
  Stripe 1  ...
File footer                   <- schema, stripe list, per-column statistics
Postscript                    <- compression kind, footer length, version
<1-byte postscript length>    <- the reader starts here and works backwards

At a glance

Category
File Formats
Governance
Apache Software Foundation
Status
Stable; mostly seen in Hive-era stacks
First released
2013

Links

Related standards

Other standards in File Formats.

See ORC in context

Open the interactive Data Landscape to compare ORC against every other open standard, or grab the raw JSON. Spotted something wrong? Open an issue.