Apache Arrow は、列指向データを処理するデータ分析アプリケーションを開発するための言語非依存のソフトウェア フレームワークです。最新のCPUおよびGPUハードウェア上で効率的な分析操作を行うために、フラットなデータと階層的なデータを表現できる標準化された列指向メモリ フォーマットを備えています。[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]これにより、動的ランダム アクセス メモリのコスト、変動性、または物理的な制約など、大規模なデータセットを扱う際の実現可能性を制限する要因が軽減または排除されます。[ 7 ]
Arrow は、 Apache Parquet、Apache Spark、NumPy、PySpark、pandas 、その他のデータ処理ライブラリと連携して使用できます。このプロジェクトには、C、C++、C#、Go、Java、JavaScript、Julia、MATLAB、Python (PyArrow [ 8 ] )、R、Ruby、Rust で記述されたネイティブソフトウェアライブラリが含まれています。Arrow は、これらの言語とシステム間でシリアル化のオーバーヘッドなしに、ゼロコピー読み取りと高速なデータアクセスと交換を可能にします。[ 2 ]
Arrowは、分析[ 9 ]、ゲノミクス[ 10 ] [ 7 ]、クラウドコンピューティング[ 11 ]など、さまざまな分野で使用されています。
Apache ParquetとApache ORC は、ディスク上の列指向データ形式の代表的な例です。Arrow は、これらの形式を補完し、メモリ内でデータを処理するために設計されています。[ 12 ]メモリ内処理におけるハードウェア リソース エンジニアリングのトレードオフは、ディスク上のストレージに関連するトレードオフとは異なります。[ 13 ] Arrow および Parquet プロジェクトには、2 つの形式間でデータの読み書きを可能にするライブラリが含まれています。[ 14 ]
Apache Arrow は、2016 年 2 月 17 日にApache Software Foundationによって発表されました。 [ 15 ]開発は、他のオープンソースのデータ分析プロジェクトの開発者連合によって主導されました。[ 16 ] [ 17 ] [ 6 ] [ 18 ] [ 19 ]初期のコードベースと Java ライブラリは、 Apache Drill のコードを基に作成されました。[ 15 ]