ORC
Optimized Row Columnar file format specification — a columnar format with built-in indexing, compression, and predicate pushdown support, originally developed for the Hive ecosystem.
Summary
Optimized Row Columnar file format specification — a columnar format with built-in indexing, compression, and predicate pushdown support, originally developed for the Hive ecosystem.
ORC is the legacy columnar format in the Hadoop/Hive ecosystem. On S3, it serves the same role as Parquet — efficient columnar storage for analytical queries — but is primarily used in organizations with existing Hive investments.
- ORC and Parquet are functionally similar for most workloads. The choice is usually driven by ecosystem (Hive → ORC, everything else → Parquet) rather than technical superiority.
- ORC's built-in ACID support (for Hive) operates differently from table format ACID (Iceberg, Delta). They are not the same concept.
used_byApache Spark, Trino — supported as a data file formatsolvesCold Scan Latency — columnar format enables predicate pushdownscoped_toS3, Table Formats
Definition
Optimized Row Columnar file format specification. A columnar format with built-in indexing, compression, and predicate pushdown support, originally developed for the Hive ecosystem.
ORC predates Parquet in the Hadoop ecosystem and remains in use in organizations with significant Hive and Spark-on-YARN investments. It provides similar benefits to Parquet (columnar storage, efficient analytics) with different performance trade-offs.
Analytical data storage in Hive-centric S3 environments, legacy Hadoop data lake compatibility.
Recent developments
- Apache ORC 2.3.0 is the current release. The 2.3.0 line adds Java 25 support and a new
Lz4Codecbased on lz4-java, alongside the usual dependency and reader/writer fixes. The C++ library is now packaged asorc/2.3.0on Conan Center for native builds. Per apache/orc releases and Conan Center (orc/2.3.0). - Format spec split into its own repository. Apache ORC Format 1.0.0 carries the spec and protobuf definitions, designed for Apache ORC 2.0+, kept separate from the implementation. Per GitHub (apache/orc-format).
- Arrow provides first-class ORC read/write. PyArrow supports reading and writing ORC, with Arrow acting as the in-memory representation layer; ORC itself originated for Hadoop and is adopted by Drill, Hive, Impala, and Spark. Per arrow.apache.org.
- Ecosystem remains narrower than Parquet. ClickHouse's format analysis notes ORC (Hive 0.12, Oct 2013) uses ~200MB stripes and three-level statistics (file/stripe/row group), reads well in Spark/Trino/Presto, but has thinner support in ClickHouse, DuckDB, BigQuery, and Snowflake. Per clickhouse.com.
Connections 5
Outbound 5
Resources 3
The authoritative ORC file format specification defining the stripe structure, type system, encoding schemes, compression, indexes, and file footer layout.
Official Apache ORC documentation covering configuration, Hive/Spark integration, ACID support, and performance tuning.
Canonical repository containing the C++ and Java implementations of the ORC format, plus the specification source and test files.