表題のとおりです。
市ヶ谷Geek★Night#11【Spark勉強会】ChristmaSpark 〜マサカリでツリーを飾ろう〜というイベントで登壇してきました。
お話しした内容はこちらです。
技術的な話
用いた技術は、
- Spark(1.6 -> 2.0)
- MLlib
- EMR
- RedShift
- Finagle
- netlib-java
- ElastiCache (Memcached)
あたりが挙げられます。
手順としては、
- 生ログをRedShiftで前処理してS3に保存
- SparkがS3からデータを読みモデル生成
- モデルをS3にバイナリ出力
- 推薦サーバがモデルを読み込み、リアルタイム推薦 or Cacheから読む
- 結果が多少バラけるように独自ロジックを加えて推薦サーバの出力とする。
という形になります。
Spark周りの動かし方やトラブルシューティングについてはここにメモしてあります。(この記事から他の記事へたくさんリンクが出ています。)
http://qiita.com/uryyyyyyy/items/f8bb1c4a4137e896de7f
登壇してみての話
この手の技術は前提知識の共有が難しいですね。。。
参加者アンケートの結果を見せていただいたのですが、「難しい」「そもそもリコメンドエンジンがわからない」などの声がありました。
イベント告知直後にはおおまかに話す内容と前提知識をお伝えしていればよかったのかもと思いました。
また、アンケートの中に「スライドの字が小さくて見にくい」という声もありました。
ネット上に公開しておいても理解しやすいように文字を多めに書きましたが、
プロジェクタに映すにしては文字のサイズが小さかったようです。
また、フォント字体も細身のものを選んでしまっていて、それも読みにくさの一因だったようです。
ついでに考察すると、黒ベースに白字よりも、白ベースに黒字の方がプロジェクタ映えするように思いました。
オススメの文字サイズ・フォント・色・背景色があれば教えていただきたいです。
終わりに
Sparkはそのとっつきにくさから、「専門性のもとめられる難しいもの」と思われがちですが、何度か動かしてみると意外と簡単なことに気づくはずです。
(とりあえずJVMのメモリ管理と並列処理とYARNの概要とSparkのアーキテクチャを理解すれば作るのに困らないです。)
EMRを使うと小規模からでも手軽に始められるので、ぜひこの機会に試してみてください。
(もしわからないことがコメント頂ければ答えられると思います。)