2017年4月12日頃のApache Arrowの様子を紹介します。
arrow::Tensor
の追加
0.2.0頃のApache Arrowはarrow::Array
で1次元のデータ(配列)、arrow::Table
で2次元のデータ(表)を表現していました。最近のApache Arrowはこれらに加えてarrow::Tensor
を追加しました。これはN次元のデータを表現します。
arrow::Tensor
は以下と同じようなデータを表現します。
Apache Arrowはシステム間でのデータ交換のコストを下げることを重視しています。つまり、最近のApache Arrowはarrow::Tensor
で表現するようなデータのデータ交換コストも下げる取り組みを始めた、ということです。
現時点のarrow::Tensor
はゼロコピーでのデシリアライズに対応しています。Rayという分散タスク実行エンジンはNumPyのデータをシリアライズするためにApache Arrowを使うようにしました。
今後はarrow::Tensor
のデータに対して数学関数を使えるようにする予定です。要素毎(element-wise)の演算だけでなく行列演算もサポートするかどうかはまだわかりません。
サブライブラリーの統合
0.2.0までのApache Arrowはlibarrowとlibarrow_io(入出力用)とlibarrow_ipc(シリアライズ・デシリアライズ用)というライブラリーに分かれていましたが、libarrowに統合されました。Apache Arrowを使う場合は全部使うことが多いので、これでシンプルに使えるようになりました。
まとめ
2017年4月12日頃のApache Arrowの様子を紹介しました。そろそろ0.3.0がでそうなのですが、arrow::Tensor
は0.3.0の目玉になりそうです。