Arrow (колоночный формат Apache в памяти)
Apache Arrow — платформенно-независимый колоночный формат данных в памяти, обеспечивающий высокопроизводительную аналитику без затрат на сериализацию. Файлы Arrow (.arrow, .feather) хранят данные в том же формате, который используется в оперативной памяти.
MIME-тип
application/vnd.apache.arrow.file
Тип
Бинарный
Сжатие
Без потерь
Преимущества
- + Zero-copy data sharing between languages and processes
- + Optimized for SIMD and vectorized computation
- + Standard memory layout for modern data tools (DuckDB, Polars, Pandas)
Недостатки
- − Not designed for persistent storage — use Parquet for that
- − Files are larger than compressed Parquet or CSV
- − More complex than CSV for simple data exchange
Когда использовать .ARROW
Используйте Arrow для обмена данными между системами (Spark ↔ pandas ↔ R), как формат IPC-хранения и там, где нужен доступ к данным без затрат на десериализацию.
Технические детали
Arrow использует буферы фиксированной ширины с выравниванием по 64 байтам для SIMD-оптимизации. Arrow IPC (Feather v2) сериализует RecordBatch в файл или поток. Формат поддерживает вложенные типы (struct, list, union), словарное кодирование для категориальных данных и Flight RPC для сетевой передачи.
История
Уэс Маккинни (создатель pandas) и Жюльен Ле Дем (создатель Parquet) инициировали Apache Arrow в 2016 году. Цель — создать единый формат в памяти для устранения затрат на сериализацию/десериализацию при обмене данными между системами.