This prompt helps select the right file and table formats for a lake or lakehouse based on workloads, engines, and update requirements. It is especially valuable when teams need to choose between plain file formats and ACID table formats for different layers. The response should clearly separate storage format from table-management capabilities.
Select the right file format and table format for each layer of this data lake.
Workloads: {{workloads}} (batch analytics, streaming, ML feature engineering, etc.)
Platform: {{compute_engines}} (Spark, Trino, Dremio, BigQuery, etc.)
1. File format comparison:
Parquet:
- Columnar, splittable, highly compressed
- Best for: analytical reads, column-selective queries, broad engine support
- Limitations: no ACID transactions, no efficient row-level updates, schema evolution is limited
- Choose when: read-heavy analytics, stable schemas, no need for row-level changes
ORC:
- Similar to Parquet, marginally better for Hive workloads
- Choose when: primary engine is Hive or Hive-compatible
Avro:
- Row-based, schema embedded in file, excellent schema evolution support
- Best for: streaming ingestion, schema-registry integration, write-heavy workloads
- Choose when: Kafka โ data lake ingestion, schema evolution is frequent
Delta Lake / Apache Iceberg / Apache Hudi (table formats):
- ACID transactions, time travel, schema evolution, row-level deletes
- Delta: tightest Spark integration, best for Databricks
- Iceberg: broadest engine support (Spark, Trino, Flink, Dremio, BigQuery), best for multi-engine lakes
- Hudi: streaming-optimized, best for CDC and near-real-time use cases
2. Recommendation by layer:
- Bronze (raw ingest): Parquet or Avro depending on source
- Silver (cleansed): Delta or Iceberg (need row-level updates for SCD)
- Gold (marts): Delta or Iceberg (need ACID for concurrent writes)
3. Compression codec recommendation:
- Snappy: fast compression/decompression, moderate compression ratio (default)
- Zstd: better compression ratio than Snappy at similar speed (preferred for cold storage)
- Gzip: maximum compression, slow decompression (use only for archival)
Return: format selection matrix, recommendation per layer, and compression codec guide.