Ответ
В контексте DWH и аналитических систем, помимо CSV и JSON, активно используются следующие форматы:
Колоночные форматы (оптимизированы для аналитики):
- Parquet — открытый формат с высокой степенью сжатия, поддерживает вложенные структуры и эффективное отсечение столбцов (column pruning).
- ORC (Optimized Row Columnar) — похож на Parquet, изначально создан для экосистемы Hadoop/Hive.
- Apache Arrow — in-memory формат для быстрого обмена данными между системами (например, между Pandas и Spark).
Форматы со схемой (Schema-based):
- Avro — использует JSON для описания схемы, но хранит данные в бинарном виде. Отлично подходит для потоковой обработки (Kafka) благодаря поддержке эволюции схем (schema evolution).
- Protocol Buffers (Protobuf) — бинарный формат от Google со строгой типизацией и компактным размером, часто используется в gRPC.
Специализированные форматы:
- HDF5 — иерархический формат для хранения больших объемов научных данных.
Выбор формата зависит от паттерна доступа:
- Для ETL/ELT-процессов и аналитических запросов — Parquet или ORC.
- Для потоковой передачи данных с меняющейся схемой — Avro.
- Для межсервисного взаимодействия (RPC) — Protobuf.
Пример записи в Parquet с помощью PySpark:
df = spark.read.csv("input.csv", header=True)
df.write.parquet("output.parquet")