.arrow
Data
Apache Arrow IPC(インメモリカラムナー)
Apache Arrow IPCはインメモリデータ用の言語非依存カラムナーフォーマットです。シリアライゼーションのオーバーヘッドなしにプロセスと言語(Python、R、C++、Java)間のゼロコピーデータ共有を実現し、モダンなデータ処理パイプラインのバックボーンとなっています。
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を使用してください。
技術的詳細
Arrowファイルは各列に対する連続メモリバッファを持つ固定サイズバイナリレイアウトを使用します。IPCフォーマットはストリーミング(シーケンシャルメッセージ)とファイル(フッター付きランダムアクセス)モードをサポートします。null値にはバリディティビットマップを使用します。
歴史
Wes McKinney(Pandasの作成者)は2016年にツール間のデータシリアライゼーションの非効率性を解決するためにApache Arrowを開始しました。Arrowは共通のメモリレイアウトを提供し、DuckDB、Polars、Pandas 2.0に採用されました。