遅くなりましたが、
6/12(水)に「Spark Meetup Tokyo #1」と言う
「Spark+AI Summit 2019」に参加した方々からの情報共有を目的とした勉強会に参加し、
お話を聞いてきたので、メモをまとめておきます。

Spark Meetup Tokyo #1 (Spark+AI Summit 2019)
https://spark-meetup-tokyo.connpass.com/event/131791/

Sparkは開発が活発でプロダクトも多く、
一人でキャッチアップするのは大変なので、
このようなイベントを開催頂けるのは助かります。

以降のメモには、
全て資料へのリンクを貼っているので、
実際の内容を知りたい方は、そちらを参照下さい。

SPARK+AI Summitセッションハイライト by NTT Data

資料:

NTTデータの方からは、
「Spark+AI Summit 2019」のセッションをいくつか取り上げて、
以下のような概要紹介がありました。

  • Delta Lakeというプロダクトの紹介。
    一般にデータレイクを構築する時は、
    スナップショットや差分データを、時間軸でパーティション化したストアに追記して、
    過去のデータとマージして最新データを作ると言う、データフローを組むと思うが。
    そういったフロー作成の手間の解消や、同時更新などの問題を解決するためのミドルウェア。
  • Netflix社の事例。
    データエンジニアリング以外の分野も含めてSparkジョブを活用している。
    executorが増えると不安定になるので、パッチを当てたVersionをメンテナンスしている。
  • Airbnbの事例。
    時期に応じた値付け計算などにSparkを利用している。
    Apache Kafka → Sparkジョブで処理 → HBaseと言う流れで処理をするが、
    Kafkaのメッセージサイズに偏りがあってノード毎に処理が偏る。
    「Balanced Kafka Reader for Spark」と言うプロダクトを作って問題を解消。
  • Sparkの.Net Bindingsの紹介。
    pysparkの.Net版と言う理解で良さそう。
    C#など.Net言語で、Sparkの処理を実行・実装できる。
  • Modular Apache Spark: Transform Your Code in Piecesの紹介。
    Sparkのジョブの書くためのFrameworkの話。
    holdenk/spark-testing-base, rpau/junit4git などを紹介。

Nested Columnsの10x性能改善

資料:
https://www.slideshare.net/techblogyahoo/sparkai-summit-2019apache-spark-24nested-columns10x

Nested Columns PruningによるYahoo! Japanの事例。
ネストしたカラムを作ると性能が出ない問題が、
Spark2.4で改善したので、実際にどの程度改善したのか、及び使い方の紹介。
(デフォルトではoffなので、利用する場合はパラメータでONにする必要がある)

MLflow + Kubeflow オンプレミスプラットフォーム事例

資料:
https://www.slideshare.net/techblogyahoo/mlflow-kubeflow-ml-sparktokyo

次の組み合わせで予測モデルを学習〜デプロイするプラットフォームの事例紹介。
前処理から学習(Spark)、モデル管理・トラッキング(MLflow)、パッケージング・モデルサービング(kubernetes)。

Spark In-Memoryの発表と関連セッションの紹介

資料:
https://www.slideshare.net/ishizaki/sparktokyo2019

ApacheSparkのデータの持ち方の歴史のお話。
Spark2.3以降は、Pandas UDFを利用することで、
pysparkでも高速に処理できるようになった(ApacheArrowによる効果)こと、など。

Koalasの開発状況

資料:
https://www.slideshare.net/ueshin/koalas-unifying-spark-and-pandas-apis

SparkのDataframeをPandasのような文法で扱えるようにするKoalasの紹介。
ハイペースで開発が進められている(毎週リリースしている)こと。
Pandasとの違いとして、immutableでlazyに処理される点などを説明。

MLflowの概要と使い方

資料:
https://www.slideshare.net/maropu0804/mlflow

MLflowという、機械学習の実験結果をチームで共有するためのツールセットの紹介。

以下のサンプルコードを見た方が早い。
MLProjectに、環境の設定ファイル、実行コマンド、パラメータグリッドを記載して、
MLflowから実行すれば、よしなに実行してくれる。

MLflowのサンプルコード:
https://github.com/maropu/mlflow-blog-sample-201905

train.py見ると分かるが、ハイパーパラメータやログ出力がAPIとして用意されているので。
実行した実験内容(ハイパーパラメータ、ログ)を、WebUIを介して複数人で共有・確認出来る。