# Scaling Grab's Data Lake: Our journey to Apache Iceberg adoption

[Grab](https://yomu.fyi/company/grab) · Rahul Penti · Jul 10, 2026

## Summary

Grab transitioned its petabyte-scale data lake from Hive Parquet to Apache Iceberg to resolve metadata bottlenecks, small file fragmentation, and lack of native ACID support. Implementing Iceberg with Z-ordering reduced navigation query runtimes from 70 seconds to 6 seconds and cut daily S3 API costs by up to 95% on key operational datasets. To seamlessly manage concurrent table formats without forcing engineers to specify format prefixes, Grab developed and open-sourced UnifiedSparkCatalog. This custom catalog transparently detects table types via the Hive Metastore, routes queries to format-specific handlers, and retains backwards compatibility for legacy Hive operations.

## Takeaways

- Applying Iceberg with Z-ordering allowed Trino to prune irrelevant files using min/max statistics, cutting query runtime from 70 seconds to 6 seconds on a high-traffic dataset.
- The open-sourced UnifiedSparkCatalog registers as spark\_catalog to preserve Spark's internal legacy Hive DML logic while dynamically routing operations to format-specific catalogs.
- Generating Iceberg metadata requires reading historical data, which can cause temporary cost spikes across S3 storage tiers if migrations are not prioritized by scan frequency and API costs.

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Data Pipelines](https://yomu.fyi/topic/data-pipelines), [Migrations](https://yomu.fyi/topic/migration), [Open Source](https://yomu.fyi/topic/open-source), [Performance](https://yomu.fyi/topic/performance)

[Read original post](https://engineering.grab.com/our-journey-to-apache-iceberg-adoption)
