Apache Arrow 1.0.0の正式リリースを間近に控えた先週12月11日に、第二回目となるApache Arrow東京ミートアップが開催されました。 今回の会場は株式会社Speeeの六本木オフィスをご提供いただきました。O'Reilly本が並んだ書棚を背景に、シックな木目の家具で統一された会場で、とても素敵な会場でした。
ミートアップの内容としては、まずプログラムの冒頭で弊社の須藤から簡単なガイダンスがあった後、7人の講演者による発表がありました。 本記事の作者(藤本)の聴講メモより、各発表の要点をまとめます(箇条書き外は藤本の感想です)。
Apache Arrowの最新情報 (株式会社クリアコード/須藤)
-
Apache Arrowとは多言語に対応したオンメモリのデータ形式(とそれに関連する一連のデータ処理ライブラリ)である。
-
列指向の考え方を採用していて、できるだけコンピューターがそのまま扱えるような形式で作られている。
-
用途としては、プロセス・ホスト間のデータの受け渡しに使われている。シリアライズとパースの手間が減るので、相当効率化できる(具体的には、後の山室さんの発表を参照のこと)。
-
技術提供できるので、使ってみたい企業の方はお問い合わせください。
Apache Arrow Datasets C++ (株式会社Speee/村田さん)
-
Datasetsとは、様々な場所にあるファイルデータ(ローカルディスクやAmazon S3など)を読み出して、Apache ArrowのTableオブジェクトに統合してくれるレイヤ。
-
パスによって階層的にデータを保存する設計になっている。これで一部のデータのみを読み出したいという要望にも応えられる。
-
現時点でファイル形式はApache Parquetのみ対応しているが、今後CSVやJSONなどの各種形式の対応が計画されている。
-
これを基盤として、SQLライクなクエリを実行するクエリエンジンや、集計処理を実行するデータフレームが作られていく予定。
Apache Arrowプロジェクトが単なるデータ形式にとどまらず、ストレージや計算実行まで拡大しつつある状況がよく分かる報告でした。また「まだ全体的に議論が進んでいる段階で、実装の手が届いていないところも多いので、積極的に開発に関与すると喜ばれるかもしれない」とのことでした。
RとApache Arrow (湯谷さん)
-
RとApache Arrowの統合が格段に進みつつあるという報告。
-
一つの進展として、Apache Sparkのライブラリ
sparklyr
にApache Arrow対応が入った。これでApache Sparkとの間でApache Arrowで直接やりとりできるようになった。 -
また、Apache Parquetの読み書きもできるようになった。Pythonなどの他の言語との連携が期待できる。
-
その他にも、CRANで手軽にインストールできるようになった等の進展がある。
PostgreSQLとApache Arrowの利用事例 (ヘテロDB株式会社/海外さん)
-
PostgreSQLのForeign Data WrapperでApache Arrow形式のデータを扱えるようにしたという報告。
-
列指向なので、参照されているデータのみを読み出せるなどの良い特性がある。GPUメモリバスの特性から、演算実行も高速。
-
自社製品のPG-Stormと組み合わせることで、シングルノードで10億レコード/秒程度の性能を出せることが実証できた。
Apache SparkとApache Arrowの連携 (NTT/山室さん)
-
Apache SparkでApache Arrowを活用できる箇所は大きく二つある。1つはプログラムからクラスタにデータを投入する箇所、もう1つはクラスタの内部でデータを受け渡している箇所。
-
1つ目のユーザーとのやりとりは
@pandas_udf
というデコレータを使うだけでApache Arrow形式を使えるようになっている。ベンチマークの結果から、これでかなり高速化できることが分かっている。 -
2つ目のクラスタ内部でのデータのやりとりは、設定で有効化できるようになっている。一部の型が未対応なのでデフォルトではオフになっている。
-
未対応の型などの問題も、今後のバージョンで解消されていく予定。
なぜApache Arrowが開発されたのかとても納得がいく発表でした。要するに、並列計算のパラダイムのシステムでは、設計上、計算を実行するノード間で膨大なデータのコピーが発生する。このため、パースの手間を可能な限り省いたApache Arrowのようなデータ形式を採用することで、飛躍的な速度の向上が見込めるのです。
TensorFlowとApache Arrowの連携 (日本アイ・ビー・エム株式会社/石崎さん)
-
同僚であるIBM Spark Technology Centerのブライアンさんの代理報告とのことでした。
-
Tensorflow I/Oというデータ入出力をサポートするライブラリがあり、この中でApache Arrowもサポートされている。
-
Apache Arrowの中に高速なCSVの読み出し実装もあるので、この点でも効率化をはかることができる。
-
具体的なベンチマークはもう少しブラッシュアップしてから公表したい、とのことでした。
TensorFlowとBigQuery Storage APIとApache Arrowの連携評価事例 (SENSY株式会社/漆山さん)
-
「感性を学習する」をテーマに、数百GBから数TBのデータの購買データを分析されているとのことでした。
-
データの保存にBigQueryを使っていたが、このStorage APIにApache Arrow対応が入ったので、これを利用されているとのこと。
-
ベンチマークをとってみると、Apache Arrowを使うことで、データ取得に要する時間はもちろん、その後の学習も高速化されたとのことでした。
まとめ
ここで講演は終了して、残りの時間ではSpeeeさんにご提供いただいた夕食を食べながらの懇親会がありました。立食形式で興味のある講演者の方と直接お話することができるようになっていて、それぞれのテーブルでは活発に議論が交わされていました。
以上でApache Arrow東京ミートアップ2019 は終了しました。3時間という枠で様々な側面からの発表が聞けた充実した会だったと思います。会場を提供頂いた株式会社Speeeさんをはじめとする関係者および講演者のみなさまには改めてお礼申し上げます。ありがとうございました。