Slide 1

Slide 1 text

データウェアハウス製品の SnowflakeでPythonが動くって 知ってました? 2024-08-22 ちゅらデータ CTO 菱沼 雄太 © 2024 Chura DATA inc.

Slide 2

Slide 2 text

自己紹介から © 2024 Chura DATA inc.

Slide 3

Slide 3 text

© 2024 Chura DATA inc. 自己紹介(オフラインの姿)

Slide 4

Slide 4 text

オンラインの姿 © 2024 Chura DATA inc.

Slide 5

Slide 5 text

© 2024 Chura DATA inc. 自己紹介 ちゅらデータ CTO DATUM STUDIO 執行役員 Snowflake の Data Hero of The Year(2021) SnowVillage の村長 この子は ろあちゃん フォローしてね @foursue #stapy

Slide 6

Slide 6 text

SnowflakeでPython © 2024 Chura DATA inc.

Slide 7

Slide 7 text

今日はSnowflakeでPythonを動かす人が 増えるといいなと思って喋る © 2024 Chura DATA inc.

Slide 8

Slide 8 text

そもそも © 2024 Chura DATA inc.

Slide 9

Slide 9 text

Snowflake使うと何が美味しいの? © 2024 Chura DATA inc.

Slide 10

Slide 10 text

こんなことありませんか? © 2024 Chura DATA inc.

Slide 11

Slide 11 text

df = pd.read_csv('hoge.csv') 実行じゃ! © 2024 Chura DATA inc.

Slide 12

Slide 12 text

df = pd.read_csv('hoge.csv') 実行じゃ! MemoryError: Unable to allocate ... © 2024 Chura DATA inc.

Slide 13

Slide 13 text

df = pd.read_csv('hoge.csv') 実行じゃ! MemoryError: Unable to allocate ... © 2024 Chura DATA inc. 実は 200GBくらいあった

Slide 14

Slide 14 text

1台のコンピュータのメモリで処理できないとき 色々テクニックがある © 2024 Chura DATA inc.

Slide 15

Slide 15 text

根本的には分散コンピューティングする © 2024 Chura DATA inc. メモリを1TBつめばいいんじゃ…

Slide 16

Slide 16 text

分散処理かぁ © 2024 Chura DATA inc.

Slide 17

Slide 17 text

DaskとかPySpark使う? © 2024 Chura DATA inc.

Slide 18

Slide 18 text

インフラを用意するのがそれなりに大変 © 2024 Chura DATA inc.

Slide 19

Slide 19 text

インフラを用意するのがそれなりに大変 © 2024 Chura DATA inc. 何台用意する? メモリはどれくら い? ディスクはどれくら いいる? CPUはどれくらい必 要? お高いんでしょう? 誰がクラスタを作る の? 誰がクラスタを管理 するの?

Slide 20

Slide 20 text

クラウドネイティブデータウェアハウス © 2024 Chura DATA inc.

Slide 21

Slide 21 text

クラウドネイティブデータウェアハウス © 2024 Chura DATA inc. Snowflakeとか

Slide 22

Slide 22 text

Snowflakeは 現実の範囲だとわりと インフィニットスケール © 2024 Chura DATA inc.

Slide 23

Slide 23 text

そのうえ Snowflakeは 処理時間課金だから 価値のあるデータ処理なら やればやるだけ儲かる © 2024 Chura DATA inc. すごい 自信だ…

Slide 24

Slide 24 text

ちなみに © 2024 Chura DATA inc.

Slide 25

Slide 25 text

Snowflakeは AWS東京だと処理1時間で$2.85=約414円くらいから ※最小のウェアハウスサイズXSの料金 © 2024 Chura DATA inc.

Slide 26

Slide 26 text

どれくらいのことができるの? © 2024 Chura DATA inc.

Slide 27

Slide 27 text

144,006,767,158行のカウントとかで4.2秒くらい © 2024 Chura DATA inc.

Slide 28

Slide 28 text

めっちゃ速い、速いせいで安い ※自分たちのビジネスモデルわかってるのかな? © 2024 Chura DATA inc. 速いから安い

Slide 29

Slide 29 text

19日にも速くなって安くなったよってブログが公式で出て た、失礼だけど、中の人は馬鹿なんだと思う © 2024 Chura DATA inc.

Slide 30

Slide 30 text

※ココだけの話、見積もったインフラ費用が余りがちに… © 2024 Chura DATA inc.

Slide 31

Slide 31 text

でもDBなんて SQLだけなんでしょう? © 2024 Chura DATA inc. SQL覚えるの 面倒だな… Pythonで書けばいいんじゃ…

Slide 32

Slide 32 text

ところがどっこい そうではありません © 2024 Chura DATA inc.

Slide 33

Slide 33 text

Snowflakeは!! © 2024 Chura DATA inc.

Slide 34

Slide 34 text

サーバレス分散コンピューティングPython実行環境 なんだよ!!!! © 2024 Chura DATA inc.

Slide 35

Slide 35 text

その全貌はこちら © 2024 Chura DATA inc.

Slide 36

Slide 36 text

Snowflakeの外にあるPythonと Snowflakeの外にあるPythonと Snowflakeに組み込む UDF/UDTF 開発場所 WebUI © 2024 Chura DATA inc. 全貌??? Python コネクタ Spark用Pythonコ ネクタ Notebook Python Worksheet External Function (Lambda等) ストアドプロ シージャ Snowpark API Snowpark for pandas API Streamlit Snowpark Container Service

Slide 37

Slide 37 text

Snowflakeの外にあるPythonと Snowflakeの外にあるPythonと Snowflakeに組み込む UDF/UDTF 開発場所 WebUI © 2024 Chura DATA inc. 全貌??? Python コネクタ Spark用Pythonコ ネクタ Notebook Python Worksheet External Function (Lambda等) ストアドプロ シージャ Snowpark API Snowpark for pandas API Streamlit Snowpark Container Service いっぱいありすぎて整理できてないんじゃ…?

Slide 38

Slide 38 text

とりあえず書く © 2024 Chura DATA inc.

Slide 39

Slide 39 text

© 2024 Chura DATA inc. 1. ブラウザでログイン 2. Worksheetを開く 1. どのマシンで実行するか選ぶ:ウェアハウス 2. 誰で実行するか選ぶ:ロール 3. どこで実行するか選ぶ:データベース、スキーマ 3. Python書く&実行 WorksheetでPython書く

Slide 40

Slide 40 text

© 2024 Chura DATA inc. 1. ブラウザでログイン 2. Worksheetを開く 1. どのマシンで実行するか選ぶ:ウェアハウス 2. 誰で実行するか選ぶ:ロール 3. どこで実行するか選ぶ:データベース、スキーマ 3. Python書く&実行 WorksheetでPython書く 実際にやってみれば良いんじゃ?

Slide 41

Slide 41 text

作ったコード持ち込もう © 2024 Chura DATA inc.

Slide 42

Slide 42 text

© 2024 Chura DATA inc. ほかで開発したコード持ち込む 1. ステージに.pyおく(zipでもいいよ) • ステージはSnowflakeのファイルを置く場所のこと • ステージ=上げる手前 2. UIからpackage選ぶ 3. importする

Slide 43

Slide 43 text

© 2024 Chura DATA inc. ほかで開発したコード持ち込む 1. ステージに.pyおく(zipでもいいよ) • ステージはSnowflakeのファイルを置く場所のこと • ステージ=上げる手前 2. UIからpackage選ぶ 3. importする 実際にやってみれば良いんじゃ? (2回目)

Slide 44

Slide 44 text

Notebook使おう © 2024 Chura DATA inc.

Slide 45

Slide 45 text

© 2024 Chura DATA inc. 1. Notebookを開く 2. Python書く&実行 Notebookとりあえず使える

Slide 46

Slide 46 text

© 2024 Chura DATA inc. 1. Notebookを開く 2. Python書く&実行 Notebookとりあえず使える (ジー…)

Slide 47

Slide 47 text

SQLの中で Pythonで処理したい © 2024 Chura DATA inc.

Slide 48

Slide 48 text

© 2024 Chura DATA inc. UDF(UDTF)使おう SnowflakeはUDF(ユーザ定義関数)をPythonで書ける ※UDTF(ユーザ定義テーブル関数)は関数の結果がテーブルとして扱える関数 1. UDFを定義 • インラインで定義 • .pyで定義 2. SQLから使う

Slide 49

Slide 49 text

SQLからじゃなくて 普通にPythonを動かせるんです? 定期的に実行とかしたいじゃないですか © 2024 Chura DATA inc.

Slide 50

Slide 50 text

© 2024 Chura DATA inc. ストアドプロシージャをPythonで書ける SnowflakeはストアドプロシージャもPythonで書ける ※ストアドプロシージャはデータベースに登録できるプログラムの呼び方 1. ストアドプロシージャを • インラインで定義 • .pyで定義 • ワークシートをストアドプロシージャにする 2. 叩く

Slide 51

Slide 51 text

おじさん画面も書きたくなってきちゃったよ © 2024 Chura DATA inc.

Slide 52

Slide 52 text

© 2024 Chura DATA inc. Streamlit Streamlit は簡単にWebアプリを作るためのOSSのライブラリ ※SnowflakeはStreamlit社を買収して、Streaamlitの開発を推進してたりする 1. Streamlit Appsを新規作成 2. 書く!

Slide 53

Slide 53 text

© 2024 Chura DATA inc. ここで唐突な宣伝 https://2024.pycon.jp/ja 2024 9.27 FRI -29 SUN PyCon JP 2024 があるよ SnowflakeがStreamlitの ブースを出すらしい! ほんとかわからないので、 お前の目で確かめろ!!!

Slide 54

Slide 54 text

外にあるコードを呼びたい © 2024 Chura DATA inc.

Slide 55

Slide 55 text

© 2024 Chura DATA inc. ちょっとLambdaでデータ処理したい Snowflakeは外部関数として、LambdaとかをAPI-Gateway経由で呼べる 図はSnowflakeのドキュメントから https://docs.snowflake.com/ja/sql-reference/external-functions-introduction API Gateway Lambda (ジー…)

Slide 56

Slide 56 text

うちSparkなんでw © 2024 Chura DATA inc.

Slide 57

Slide 57 text

© 2024 Chura DATA inc. Sparkコネクタあるよ!! 図はSnowflakeのドキュメントから https://docs.snowflake.com/ja/user-guide/spark-connector-overview JDBC経由でSnowflake Connector叩いて、オブジェ クトストレージ経由でデー タをやり取り クエリプッシュダウン が効くと良い感じのパ フォーマンスに

Slide 58

Slide 58 text

いかがでしたか? © 2024 Chura DATA inc.

Slide 59

Slide 59 text

大きなデータを仕事で扱うとき… SnowflakeでPython良いと思いませんか? © 2024 Chura DATA inc. データベース用の実行環境と機械学習用 の実行環境は違うんじゃ?(GPUとか

Slide 60

Slide 60 text

え、GPUほしい? © 2024 Chura DATA inc.

Slide 61

Slide 61 text

あるよ!A100が8個乗ったやつが! (vCPU-92個、MEM-1112GB) © 2024 Chura DATA inc. Snowpark Container Serviceっていうマネージ ドなK8sでこれ使える

Slide 62

Slide 62 text

いかがでしたか? (2回目) © 2024 Chura DATA inc.

Slide 63

Slide 63 text

大きなデータを仕事で扱うとき… SnowflakeでPython書くの良いと思いませんか? © 2024 Chura DATA inc. (ジー…)

Slide 64

Slide 64 text

(もしデモがうまく行って時間があれば) 質問たいーむ © 2024 Chura DATA inc.