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.
The 2.3.0 release also adds XerialSnappyCodec, stripe-flush for large rows, and async I/O prefetch — beyond the Java 25 and Lz4Codec highlights already noted. The C++ library separately gained prefetch improvements and now requires CMake 3.25+. Per Releases - Apache ORC.
VMware Tanzu Greenplum reads and writes ORC via PXF's
hdfs:orcandhive:orcprofiles, supporting column projection, filter pushdown, and list/struct types — an integration path not covered by the Spark/Trino support already listed. Tertiary vendor doc, no better coverage found. Per Reading and Writing HDFS ORC Data (Broadcom/VMware Tanzu). Sources: apache/orc releases · Conan Center (orc/2.3.0) · GitHub (apache/orc-format) · arrow.apache.org · 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.