「Spark Meetup Tokyo #1」のメモ
遅くなりましたが、
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
資料:
- https://www.slideshare.net/nttdata-tech/spark-ai-summit-2019-report-nttdata
- https://www.slideshare.net/databricks/migrating-to-apache-spark-at-netflix
- https://www.slideshare.net/databricks/apache-spark-at-airbnb
- https://www.slideshare.net/databricks/introducing-net-bindings-for-apache-spark
- https://www.slideshare.net/databricks/modular-apache-spark-transform-your-code-in-pieces
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を介して複数人で共有・確認出来る。