FORMAT COMPARISON
Apache Arrow IPC vs Zarr
Apache Arrowは列指向データを言語間で共有するメモリ形式とシリアライズ仕様です。ZarrはN次元配列をチャンクとメタデータに分けてストアに保持する形式です。
Apache Arrow IPCとZarr、どちらを選ぶ?
複数言語の分析処理間で表データをメモリ上に受け渡し、ゼロコピー等を活用するならArrowを選びます。大規模配列を保存して必要なチャンクだけ読みたいならZarrを検討します。Arrow IPCファイルとメモリ形式を同一視しないでください。
Apache Arrow IPC向き
列指向テーブルデータを対応するプログラムや言語間で交換する・分析処理用のデータセットをArrow対応ツール間で受け渡す
- Arrow対応のライブラリや分析エンジン間で型情報を保ってデータを移動する
- ファイル版でRecord Batchへランダムアクセスする
Zarr向き
大規模な多次元配列をチャンク単位で保存・交換する・クラウドストレージ上の科学データを扱う
- 配列の一部だけを効率よく読み込む
- 分割データを複数ツールで共有する
基本情報を比較
Apache Arrow IPCとZarrの主な違いを確認できます。
| 項目 | Apache Arrow IPC | Zarr |
|---|---|---|
| 拡張子 | .arrow、.feather、.arrows | .zarr |
| MIME Type | application/vnd.apache.arrow.file、application/vnd.apache.arrow.stream | |
| 主な用途 | 列指向テーブルデータを対応するプログラムや言語間で交換する・分析処理用のデータセットをArrow対応ツール間で受け渡す | 大規模な多次元配列をチャンク単位で保存・交換する・クラウドストレージ上の科学データを扱う |
| 圧縮 | 非圧縮またはコーデックによる | optional_codecs |
| 開く方法 | Apache Arrow対応ライブラリや分析ツールで読み込みます。拡張子が.arrowならファイル版、.arrowsならストリーム版が一般的ですが、受け側が期待するIPC形式と圧縮 codec の対応も確認してください。Feather形式として扱う場合は、古いFeather V1との互換性にも注意します。 | Zarr対応ライブラリや解析ソフトで開き、仕様バージョン、配列形状、チャンク、codec、属性を確認します。ローカルではディレクトリ全体、クラウドでは必要なキー群を保持し、作成元のメタデータ規約も確認してください。 |
| 書き出し・変換 | Parquetは分析データの保存・配布、CSVは単純な表データ交換向けの候補です。変換するとArrow独自の型、ネスト構造、辞書エンコードや圧縮設定が変わったり失われたりする場合があります。受け側に必要な型と精度を確認し、元データを保管してください。 | netCDFやHDF5との変換では次元、型、チャンク、属性、座標規約の対応を確認します。変換先で一部構造やcodecを扱えない場合があるため、元データを保存し値を検証してください。 |
用途別の選び方
作りたいものや使う場面から選べます。
Arrow対応のライブラリや分析エンジン間で型情報を保ってデータを移動する
列指向テーブルデータを対応するプログラムや言語間で交換する・分析処理用のデータセットをArrow対応ツール間で受け渡す
Apache Arrow IPC向きファイル版でRecord Batchへランダムアクセスする
列指向テーブルデータを対応するプログラムや言語間で交換する・分析処理用のデータセットをArrow対応ツール間で受け渡す
Apache Arrow IPC向き配列の一部だけを効率よく読み込む
大規模な多次元配列をチャンク単位で保存・交換する・クラウドストレージ上の科学データを扱う
Zarr向き分割データを複数ツールで共有する
大規模な多次元配列をチャンク単位で保存・交換する・クラウドストレージ上の科学データを扱う
Zarr向き確認ポイント 1
Arrowは主に列指向のメモリ表現とシリアライズ/transport protocolを定義します。Zarrはshape・data type・chunk grid・codec等を含む配列ノードをストア内のメタデータとチャンクとして定義します。
使い分け確認ポイント 2
Arrow配列は連続bufferや子配列等の物理配置を持ち、メモリ共有に向きます。Zarrチャンクは独立して符号化・保存され、部分読込や複数バックエンドに対応します。
使い分け選ぶ理由を詳しく
- 永続化や変換ではArrow IPCか別のファイル形式か、型・null・timestamp単位/タイムゾーン、配列shape・軸の意味、codec、チャンク単位の読取パターンを明示して検証してください。