ibis: すごい pandas ⼤規模データ分析もらっくらく #summerds
TRANSCRIPT
1© Cloudera, Inc. All rights reserved.
Ibis: すごいpandas⼤規模データ分析もらっくらく有賀康顕, Cloudera 2016/7/25 Spark + Python + Data Science祭り
2© Cloudera, Inc. All rights reserved.
⾃⼰紹介• 有賀 康顕(ありが みちあき)• セールスエンジニア• お客様がCloudera製品を活⽤できるように⼀緒に議論するのが主な仕事
• メーカーの研究所で⾃然⾔語処理/機械学習の研究開発の後、クックパッドで機械学習を活⽤したプロダクト開発を⾏ってきた
email: [email protected]
3© Cloudera, Inc. All rights reserved.http://chezou.hatenablog.com/entry/2016/05/05/222046
4© Cloudera, Inc. All rights reserved.http://rebuild.fm/145/
5© Cloudera, Inc. All rights reserved.
ClouderaとData Science• Clouderaとは?•Hadoop/Sparkを中⼼としたビッグデータ基盤を提供•社内にData Science teamを持つ• 皆さんもお世話になってるかも• 「Sparkによる実践データ解析」の著者陣は現/元Cloudera社員
https://www.oreilly.co.jp/books/9784873117508/
Director of Data ScienceSean Owen
6© Cloudera, Inc. All rights reserved.
Jupyter notebook使ってますか?
7© Cloudera, Inc. All rights reserved.http://techlife.cookpad.com/entry/write-once-share-anywhare
8© Cloudera, Inc. All rights reserved.
Jupyter notebookを⽀えるpandas• PythonでDataFrameを扱うライブラリ• 表形式のデータをプログラマブルに処理できる• グラフ描画との連携が容易• 作者はClouderaのエンジニア
Creator of pandasWes McKinney
http://www.oreilly.co.jp/books/9784873116556/
9© Cloudera, Inc. All rights reserved.
pandasの例
http://goo.gl/vTh3mJ より抜粋
SQLを使わずにフィルター、集計ができる
10© Cloudera, Inc. All rights reserved.
pandasの課題• データを全部メモリに載せてしまう• ⼤規模データに対しては、SQLでデータを絞ってから処理を⾏うことになる
11© Cloudera, Inc. All rights reserved.
pandasの課題• データを全部メモリに載せてしまう• ⼤規模データに対しては、SQLでデータを絞ってから処理を⾏うことになる
データの抽出の試⾏錯誤こそプログラマブルにやりたかったのに・・・
12© Cloudera, Inc. All rights reserved.
pandasをカバーするIbis
13© Cloudera, Inc. All rights reserved.
Ibis• PythonとBig Dataをつなぐライブラリ• ⼤規模なデータに対しても pandas like に対話的な処理を可能にする• pandasとSQLエンジンを橋渡しすることで実現• Impala / SQLite / PostgreSQL に対応• Redshift / Presto / Vertica にも今後対応予定
14© Cloudera, Inc. All rights reserved.
CSV
Big Data
Before Ibis
プログラマブル
メモリに乗らないのでSQLで絞込
pandas
ImpalaRedshiftPresto
pandas
15© Cloudera, Inc. All rights reserved.
After Ibis
プログラマブル
pandas Ibis Impala Big Data
CSVpandas
プログラマブル
Redshift, Prestoなどにも今後対応予定
16© Cloudera, Inc. All rights reserved.
Impalaとは?• Apache Impala (incubating)•ビッグデータに特化した•インタラクティブな•分析SQL
• 15TBに対して4.4秒で処理できる!
17© Cloudera, Inc. All rights reserved.
Demo• Ibis を使って Movie Lens 20M (2千万⾏)のデータを可視化• scikit-learn で好みの映画を分類するモデルを学習• バックエンドは Impala• impaladの動くサーバの21050ポート/NNの50070ポートを開ける
• 今⽇の notebook• https://github.com/chezou/ibis-demo/
18© Cloudera, Inc. All rights reserved.
Demopipinstallibis-frameworkよりはじめよう
19© Cloudera, Inc. All rights reserved.
PySparkとはどう違うの?• 設定が簡単•DBのコネクションの設定 + port開放だけ
• 速い• 7倍速ければ7倍試⾏錯誤ができる•速度の変化は質の変化を⽣み出す
• データ規模に応じて使い分け•⼤規模データ全体の機械学習ならSpark + MLlib•ターゲティングしたデータの機械学習にはIbis + scikit-learn• NetflixはグローバルのモデルはSpark、国・地域はRと使い分け
http://goo.gl/UA8PXzより引⽤(2016/02時点)
20© Cloudera, Inc. All rights reserved.
Further more• Redshift, Presto, Vertica, Spark SQLは今後対応予定• Redshift は array_agg(), substr() などPostgreSQLと関数名が異なる部分でうまくいかない
• https://github.com/databricks/spark-sklearn• Sparkを使って並列でパラメータチューニングできる•⼀部アルゴリズムはSpark MLlib向けにモデルを変換可能
21© Cloudera, Inc. All rights reserved.
Letʼs pip install [email protected]