Data Lakes & Lakehouse

File Formats for Data Lakes: Parquet, ORC and Avro

In modern enterprise data platforms, the physical storage layer dictates both infrastructure costs and query latency. As organizations migrate from legacy data warehouses to scalable data lakes & lake

Published 10/24/2026 · Izan Technologies

Want this built for your team?

Senior engineers, your cloud, your IP.

In modern enterprise data platforms, the physical storage layer dictates both infrastructure costs and query latency. As organizations migrate from legacy data warehouses to scalable data lakes & lakehouse architectures, selecting optimal file formats is one of the most critical structural decisions data teams face. An inefficient format choice can inflate cloud object storage costs on AWS S3 or Azure Data Lake Storage (ADLS) by up to 5x and degrade distributed query performance across engines like Databricks, Snowflake, Apache Spark, and Trino.

Evaluating the primary open-source formats data lakes rely on—Apache Parquet, Apache ORC, and Apache Avro—requires balancing serialization speed, compression efficiency, schema evolution flexibility, and query pushdown capabilities. Here is a deep technical breakdown of how these formats work under the hood and how to deploy them effectively in production.


Row-Oriented vs. Columnar Storage: The Foundational Divide

To understand when to use Parquet, ORC, or Avro, you must first distinguish row-oriented serialization from columnar serialization.

Row-oriented formats store entire records sequentially on disk. This design yields blazing-fast write throughput because appending a new record requires writing a single contiguous byte stream. However, executing an analytical query that aggregates only two fields across a table of eighty columns requires scanning 100% of the byte data from storage, saturating network bandwidth and CPU caches.

Row-Oriented Layout (Avro):
[Row 1: ID, Timestamp, User, Amount] [Row 2: ID, Timestamp, User, Amount] ...

Columnar Layout (Parquet / ORC):
[Col ID: 1, 2, ...] [Col Timestamp: t1, t2, ...] [Col User: u1, u2, ...] [Col Amount: a1, a2, ...]

Columnar formats invert this paradigm by organizing data by column blocks. This architecture provides two immediate advantages for analytical systems:

  1. Aggressive Compression: Identical data types sit side-by-side, allowing algorithms like Run-Length Encoding (RLE), dictionary encoding, and bit-packing to achieve 70% to 90% compression ratios.
  2. I/O Pruning (Projection and Predicate Pushdown): Engines only read the columns explicitly requested in the query projection, bypassing unused data blocks entirely via min/max metadata statistics.

Apache Parquet: The Lakehouse Default

Apache Parquet is an open-source, columnar storage format engineered by Twitter and Cloudera to provide high-performance querying on distributed compute engines. Today, Parquet functions as the default storage foundation for Databricks Delta Lake, Apache Iceberg, and Snowflake external stages.

Internal Architecture and Encodings

A Parquet file is divided into Row Groups, typically sized between 128 MB and 1 GB. Each Row Group contains Column Chunks corresponding to each field in the dataset. Column Chunks are further subdivided into 1 MB Pages, which represent the indivisible unit of data reading and decompression.

Parquet embeds comprehensive footer metadata containing:

  • File-level and Column-level summary statistics (minimum, maximum, null counts, total values).
  • Offsets for each Row Group and Page.
  • Dictionary encoding tables.

When querying Parquet in platforms like Databricks or Snowflake, query optimizers leverage this metadata to execute predicate pushdown. If a query specifies WHERE order_date > '2024-01-01', the engine reads only the file footer first; if the maximum value in a Row Group is below that threshold, the entire 512 MB block is skipped entirely without reading its raw records.

Parquet also excels at encoding deeply nested data models (JSON, Protocol Buffers) using the Dremel record shredding and assembly algorithm without flattening the data model.


Apache ORC: Optimized Row Columnar for Heavy Analytics

Developed by Hortonworks and the Apache Hive community, Apache ORC (Optimized Row Columnar) was engineered to overcome the read performance limitations of RCFile. While similar to Parquet in its columnar nature, ORC incorporates distinct structural optimizations tailored for compute engines like Presto, Trino, and Hive.

Stripes and Built-In Light Indexes

Instead of Row Groups, ORC structures data into Stripes, typically configured between 64 MB and 256 MB. An ORC file features a structural advantage: built-in index data stored directly alongside the stripes.

Every Stripe contains:

  • Index Data: Min/max values for every column recorded at 10,000-row intervals (configurable index strides). It also supports built-in Bloom filters for columns with high cardinality.
  • Row Data: The actual compressed column streams (dictionary, data, length streams).
  • Stripe Footer: Encoding schemes and column stream locations.

The combination of index strides and Bloom filters allows Trino and Hive to perform block skipping at a micro-level (row-level pruning within a single Stripe), making ORC exceptionally fast for selective point-lookup queries and highly filtered analytical queries. While Parquet has broader native support across modern cloud data warehouses like Snowflake, ORC remains a formidable choice in large-scale Trino and open-source Spark estates.


Apache Avro: The Streaming and Ingestion Workhorse

Apache Avro is a compact, row-based serialization format widely used in message-driven pipelines and data streaming architectures. Avro represents data in a dense binary format accompanied by schemas defined strictly in JSON.

Schema Resolution and Streaming Integration

Unlike Parquet and ORC, where schema information is primarily used for column mapping and footer statistics, Avro was designed from the ground up for dynamic schema evolution.

When streaming data through Apache Kafka or AWS Kinesis, every message payload can be serialized using an Avro schema managed by a central Schema Registry. Key operational advantages include:

  • Low Serialization Overhead: Avro writes records sequentially with minimal CPU cost, making it ideal for high-throughput, low-latency producers.
  • Robust Schema Evolution: Avro provides strict rules for BACKWARD, FORWARD, and FULL compatibility. Fields can be added, updated, or deprecated without breaking downstream consumer pipelines.
  • Binary Density: Because the schema is not repeated with every single record (only referenced via a schema ID or bundled once per file), Avro messages have microscopic network payloads compared to raw JSON or XML.

While suboptimal for aggregations and wide-table analytics, Avro is the gold standard for bronze/raw layer landings where ingestion speed and schema governance dominate architectural requirements.


Technical Comparison: Parquet vs. ORC vs. Avro

Understanding the performance profiles of these file formats data engineers use helps prevent storage bottlenecks across hybrid data platforms.

Feature / MetricApache ParquetApache ORCApache Avro
Storage LayoutColumnarColumnarRow-oriented
Primary Use CaseBI, Lakehouse queries, ML trainingLarge-scale SQL analytics, Trino/HiveEvent streaming, Raw landing (ELT)
Write PerformanceModerate (CPU-heavy encoding)Moderate (CPU-heavy encoding)Extremely Fast (sequential append)
Read / Scan PerformanceExceptionally HighExceptionally High (with Bloom filters)Slow for subset queries (full scans)
Compression RatiosHigh (Snappy, ZSTD, Gzip)Very High (ZSTD, Zlib, Snappy)Moderate (Deflate, Snappy)
Nested Data HandlingNative (Dremel algorithm)NativeSupported via complex schemas
Schema EvolutionAppend-only / Metadata updatesAppend-only / Metadata updatesRobust (Full forward/backward rules)
Ecosystem SynergySpark, Databricks, Snowflake, AWS AthenaTrino, Presto, Apache HiveApache Kafka, Flink, Event Hubs

Architectural Best Practices: Layering Formats Across the Lakehouse

Rather than choosing a single file format for an entire platform, enterprise architectures leverage multi-format designs tailored to the data lifecycle. At Izan Technologies, our data engineering teams routinely implement multi-tiered lakehouse storage patterns on AWS, Azure, Databricks, and Snowflake using the following framework:

1. Ingestion / Bronze Layer (Avro or Append-Heavy Formats)

Kafka topics and raw message buses stream data into cloud object storage landing zones. Use Avro here to serialize events rapidly without forcing the ingestion layer to compute columnar indexes or compress row groups under tight latency SLAs.

2. Cleansed / Silver Layer (Parquet via Delta Lake or Apache Iceberg)

Once raw records are staged, distributed ETL jobs batch-process, clean, and deduplicate the data. Convert records into Parquet (encapsulated by table formats like Delta Lake or Apache Iceberg). This provides ACID transactions, time travel, and high-performance column pruning while standardizing the underlying storage engine.

3. Aggregated / Gold Layer (Optimized Parquet / ORC)

For business-facing data marts, reporting views, and feature stores for machine learning, data should remain in highly optimized Parquet or ORC formats. Use Zstandard (ZSTD) compression with optimized file sizing—targeting 512 MB to 1 GB per file—to eliminate the "small file problem" and minimize cloud storage API costs.


How Izan Technologies Helps

Designing an enterprise lakehouse that balances sub-second query latency with low cloud storage costs requires deep data systems expertise. Izan Technologies helps enterprises design, build, and optimize custom data platforms, streaming pipelines, and AI/ML solutions across AWS, Azure, Databricks, and Snowflake.

When you partner with us, your internal teams maintain complete strategic independence: our clients retain 100% of the intellectual property (IP) we deliver, from proprietary ingestion pipelines to optimized lakehouse infrastructure.

Ready to optimize your lakehouse architecture for peak performance and lower costs? Try our Smart AI DataStudio to accelerate your data engineering workflows, or talk to an expert to design your custom data solution today.

Want this built for your team?

Senior engineers, your cloud, your IP.