gepuro.net
gepulog

データ分析エンジニアによる備忘録的ブログ

『詳解 Apache Spark』出版記念イベントに参加しました

最近はSparkに触れていなかったのですが、日本語の情報も豊富になってきたのを感じました。 自分も書きたい。 ブログネタでやるかなあ。と思った一日でした。

データ分析業界の理想と現実 - Spark普及の歴史を添えて(下田倫大さん)

  • Spark登場時に私は夢とロマンを見ました!
  • 現実は厳しい・・・。
  • ガンガン使おう
  • 2013年: 大規模データ処理といえばHadoopで集計
  • 2014年: Sparkとの出会い, インドで使ってた
  • 第一印象: Python, Rのインターフェースがある!
  • 2015年: ブレインパッド社としてビジネスモデル的にSparkのメリットが大きくない
  • コンサル/SI は新しい技術導入が遅くなりがち
  • ニーズが必要
  • DeltaCubeという自社開発プロダクトで導入
  • 案件が効率化からイノベーションに変化

データマネジメントツールDeltaCubeでのSpark利用(師岡一成さん)

  • 2014年に触り始めた
  • 2015年に本格的に
  • DeltaCube: プライベートDMPのログからセグメントを作成ツール
  • 2014年に開発が始まり、リリースまで2年ぐらいかかった
  • 初期
    • 行動ログを手動で検索して、セグメントを作成
    • データサイズは数TB, presto, impalaを使った
  • 中期(2015年) * 機能的にマニアック路線
    • 広告運用の手間がかからないようにしたい
    • 自動でユーザをクラスタリング(DeltaCube)
    • Rtosterで自動ABテスト
    • ETL, MLlib
  • 現在
    • YARNとPrestoの二つはいやだけど、統一できず・・・
    • EMR上にPrestoクラスタを稼働
  • Sparkよ流行ってくれ

Dynamic Resource Allocation in Apache Spark(今井雄太さん, @imai_factory)

  • Sparkとの出会い
    • Amazon KinesisのConsumerとして
  • Spark運用の話
  • ワードカウントの例(scalaで)
  • DAG Scheduler
    • sc.parallelize()でRDDが出来る、分散して保持されるオブジェクト
    • Array⇒ParallelCollectionRDD⇒MapPartitionsRDD⇒ShuffledRDD⇒Array
  • Tasks > Executors
    • Executorsの数をダイナミックに変えてくれる
    • Tasksの応じて、増やしたり、減らしたり
  • Dynamic Resource Allocationのよさ
    • 投げられたJobに対して、動的にExecutorsを変えて、速度を上げる
    • 消さないとリソースが無駄になるので、消そう

Help me! Help me with DNN in Spark!!(石川 有さん)

  • Spark2.0に向けてDNNの拡張を進めるとあったが、見送られた
  • 誰か助けて!
  • MultilayerPerceptronClassifier
    • Spark1.5
    • L-BFGS
    • Sigmoid, Softmaxのみ
  • Regression対応が必要
    • ReLU, 恒等写像
    • L-BFGSではなくSGDに最適化アルゴリズムを変更する必要がある
    • AdaGrad, Adamなどを実装できるように更新処理を再設計
  • 現在のSGDは非効率で精度が悪い
    • Parallelized SGDとして再実装する必要がある
  • Drop-outもできない
  • CNNのような多次元配列の入力をサポートしていない
  • Bayesian Optimizationなどの自動チューニングアルゴリズムを追加するべき
  • 既存のPublic APIを変更するのを嫌う風土

scalatestでSpark StreamingのUnitを書く話(田中裕一さん)

  • 100万人のデータ分析(Sparkを含む)
  • API 300億回/日でもSparkが使える
  • Spark as a Service
  • StreamingのUnitが面倒
    • アプリケーション側で状態を保つため、Unitが組みづらい
    • Streamingは外部との接続が前提なためUnitが書きにくい
    • 複数のmicro-batchの集計結果などの書き方が難しい(window処理など)
    • やったこと
      • Unit側でStream作成、Unitでテストデータ作成⇒Streamへ、処理結果の出力
    • 処理部分と接続部分は切り分けて書く(出力部分の切り分けた方が良い)
    • どうやってStreamを渡すか
  • SparkでTestを書こう
  • 簡単に書けるけど、構造化を意識しないと汚いコードになっちゃうので注意

spark.ml の API で XGBoost を扱いたい!(小宮篤史さん)

  • SmartNewsのエンジニアをしてます
  • XGBoostを知っているひと⇒ 少数
  • Spark上でXGBoostを使ったことあるひと⇒ 会場でほぼいない
  • SparkXGBoost
    • pure Scalaで実装
    • 開発が活発ではない
  • xgboost4j-spark
    • DMLCが提供する公式のSpark integration
    • RDDのみ、DataFrameに非対応

Sparkで始めるお手軽グラフデータ分析(加嵜長門さん)

  • Hadoop/Spark Conference Japan 2016でのアンケート
  • GraphXの利用ユーザが30人!(Spark SQL/ DataFrameは252人)
  • GraphFramesの登場
  • GraphXとDataFramesの統合
  • 1人3冊買えば、続編が出るかも!
  • グラフじゃないとできないの?
    • 多くの場合は他の選択肢がある
  • いろんな視点を持つことが大事
  • 社内営業をする時に、絵で説明できて良いこともある
  • リコメンド
    • ユーザ同士、商品間
  • マーケティング
    • ネットワークビジネス
    • バイラルマーケティング
    • 口コミを使ったマーケティング
      • 影響力の強いユーザの抽出
  • 不正検知
    • 偽装保険金詐欺
      • 少人数で何度も事故にあっているなんてことが・・・
    • クレジットカードの詐欺
      • 住所や電話番号を少人数で使いまわす
  • 会社間のお金の流れ
  • グラフDB
    • Neo4J, Titan
    • 分散処理による高スループット
  • グラフ処理系
    • GraphLab
    • グラフに特化しない汎用的なデータ構造
    • 表形式やベクトルとシームレスに結合できる
  • RDDから1行でグラフを作れる!

さいごに

アフィリエイトを張っておきます。


似てる記事

似てない記事