2016/07/25に「夏真っ盛り!Spark + Python + Data Science祭り」を開催しました。
今回はClouderaに入って初めてのコミュニティイベントということでしたが、なんと400人を超える応募をいただいてとてもありがたい限りです。 会場をご提供いただいたDMM.comラボ様、発表いただいたサイバーエージェントの内藤さん、DMM.comラボの加嵜さん、LTの皆様ありがとうございました。
pandasを大規模データにつなぐIbis
www.slideshare.net
Ibisはpandasの作者でもある Wes McKinney(@wesmckinn) の作っているライブラリです。 ひとことで言うと、pandasのプログラマブルな処理を大規模データにもできるようにします。 大規模データは高速なSQLエンジンにまかせて、pandas likeなDSLでpandasと連携できるようにしており、データがTB以上のデータに対してもSQLを書かずに試行錯誤できます。
なお、日本語の情報はかなり少ないのですが*1、こちらのブログが参考になると思います。 もし、Impalaを試すのであればQuick Start VMか、Cloudera Directorを使うとブラウザでポチポチするだけでAWS, GCP, Azureに簡単にImpalaクラスターが立てれるのでおすすめです。Director導入方法はこちらが参考になります。
Ibisの詳細は資料を見ていただければと思いますが、いくつか補足をしたいと思います。
SQLじゃなくてプログラマブルなのは何が嬉しいの?
pandasをお使いの方はわかると思いますが、SQLに比べると試行錯誤がやりやすいと思います。例えば、SQLの途中結果を変数に格納できるので、途中までの処理は共通でそこから先を複数パターン作るというのも同じ変数に格納して、後段のメソッドチェーンを変えれば楽にできるというメリットが有ります。使っている感覚はRailsのActive Recordみたいなイメージです。
Sparkより7倍速いのは嬉しいの?
大事なのは15TBのデータを4.4秒で処理できるというスピード感です。処理を投げて帰ってくるまでの時間が短いと、思考の中断が減ります。 例えば、ビルドやテストに時間がかかってコーヒーをいれにいく、みたいな経験はあるんじゃないかと思います。その断絶がなくなるので、考えを継続できますし、ポッと思いついたことをどんどん試行錯誤できます。
Sparkとの住み分けは?
Ibisは、WesがPythonでend to endでPythonを使って分析をしたいという想いでスタートしています。 個人的にはJupyterとともに対話的に試行錯誤をする強力なツールになっていると思います。 もともとImpalaとPython/pandasをつなぐものとしてスタートしたのですが、RedshiftやPrestoなども今後対応していきたいということも言及されています。 なので、プロトタイピングにJupyterとIbisを使うというのが良いと思います。プロトタイプ後にSparkSQL*2でバッチとして安定化をはかるということもできるでしょう。
もう一つの方向性としては、NetflixがグローバルモデルをSparkで、国・地域のモデルをRで学習しているように、大規模な機械学習はSpark + MLlibで、絞った後のデータはIbis + scikit-learnでみたいな使い分けは可能だと思います。
サイバーエージェント内藤さん: Amebaにおけるレコメンデーションシステムの紹介
www.slideshare.net
Amebaでの協調フィルタリングによるHBaseを使ったリアルタイムレコメンドの話。 HadoopスタックだとHBaseを使うのが多いのですが*3、更にClick数を取得してバンディットアルゴリズムも使っているというのは凄いですね。
DMM.comラボ加嵜さん:Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
www.slideshare.net
チューニングの話もインパクトが大きかったですが、jsonで「レシピ」を書けば、自分のサービスのレコメンドモデルができるという話はとても驚きました。 ログフォーマットをきちんと統一して横展開をしているのでしょうね。
LT
horiken4 さん:初めてのSparkでハマったこと
Google Data ProcでSparkを使ったら/tmpにjarが貯まるなど、いろいろハマった話を紹介いただきました。
uryyyyyyyさん:EMR上でPython3系でpysparkする話
EMRにAnacondaをいれてPySparkでモデルを作る話でした。逆質問でJuliaを使ってると答えた人が2人くらいだったとのことで寂しかったです。
suthio さん:Sparkで実装しているレコメンドエンジンの基本的なパフォーマンスチューニング について
DAGを見よう!という話でした。そして、ポケモンGO仲間を募集しているとのことです。
終わりに
自分がホストしたイベントの中では過去最大の募集人数だったのですが、大盛況のうちに終わりました。ご協力・ご参加いただいた皆様ありがとうございました。 今回参加できなかった方もたくさんいらっしゃると思いますので、また次回もこういったイベントをできればと考えています。 乞うご期待ください。