Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DatumSt_Snowpark0126.pdf

tat
January 27, 2023

 DatumSt_Snowpark0126.pdf

tat

January 27, 2023
Tweet

Other Decks in Technology

Transcript

  1. 0
    Snowflake初心者が
    Snowparkで実践したこと
    2023/01/26 データエンジニア部1G 立石 真悟

    View Slide

  2. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    自己紹介
    2022年7月以前 「データエンジニア見習い」に分類される職歴(なぜかGCPが多かった)
    2022年8月1日 DATUM STUDIO入社
    2022年9月以降 AWS基盤機械学習バッチの保守案件
    皆様に訴えたいこと
    Snowflakeは知らなかったし、案件でも触ったことがない。
    1

    View Slide

  3. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    発表概要
    ゴール:Snowflakeを知らない人がPython用Snowparkを使った発表をするまでの奮闘を描く
    2
    snowflake
    Scala
    Java
    Python
    対象: Snowflakeを知らない、使ったことのない方

    View Slide

  4. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    動作環境
    3
    ※m1macではminiconda環境でx86用の環境を作る工程があります。が、限定的なので割愛します。
    ■マシンスペック
    MacBook Air (M1, 2020)
    チップ Apple M1
    macOS Ventura 13.1
    ■ライブラリのバージョン(miniconda環境)
    python 3.8.15
    conda 22.11.1
    snowflake-snowpark-python 1.0.0
    streamlit 1.16.0

    View Slide

  5. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowflakeに入門0
    4
    DATUM STUDIOってSnowflakeに力入れてるのかー。よ〜し、やってみっか。

    View Slide

  6. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowflakeに入門1
    会社でsandboxのアカウントを持っている
    →ユーザーを作成してもらい、サインイン。。。したのはよいけれど。。。。。。
    5
    ワークシート?
    ウェアハウス?
    ステージ?
    アカウント?

    View Slide

  7. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowflakeに入門2
    😭
    うむ、わからん。(BigQueryと違うやん)
    6

    View Slide

  8. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowflakeに入門3
    Getting Started with Snowflake - zero to snowflakeを実践(CITI_BIKE)
    https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html
    7

    View Slide

  9. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowflakeに入門4
    😟
    ↑(ご想像にお任せします。)
    あーそーゆーことね
    (以下略)
    8

    View Slide

  10. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowparkに挑戦1
    では、実際にSnowParkを触ってみることにした。
    認証情報(ここではcredential.jsonに書く内容)…あれ?
    9

    View Slide

  11. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowparkに挑戦2
    なにを書けばええねん?
    accountが、、、わからない。。。
    10

    View Slide

  12. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowparkに挑戦3
    調べると2通りあるようだ。(画面では左下を見れば良いらしい)
    ・形式1:組織内のアカウント名
    [組織名]-[アカウント名]
    ※ハイフンで繋ぐ(例:ABCDEFG-PQRSTUV)
    ・形式2:リージョン内のアカウントロケーター
    [アカウントロケーター].[地域名].[クラウドプラットフォーム]
    ※ドットでつなぐ(例:xy12345.us-east-2.aws)
    11

    View Slide

  13. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowparkに挑戦4
    セッション作成(=ログイン)って別にSnowparkじゃなくてもよくない?
    すでに、コネクタがあるのになぜだろう?
    GUI
    SnowSQL(CUI)
    Connector
    Snowpark
    snowflake
    12

    View Slide

  14. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    (怒られそうですが。)
    データ処理をsnowflakeのサーバー側でやってくれるところがSnowparkの強みなんじゃないかと思
    えてきた。
    クライアント
    (パイプライン)
    Snowparkに挑戦5
    13
    サーバー
    Snowflake
    Connector
    Snowpark UDFs処理
    処理
    SQLステートメント文字列

    View Slide

  15. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    Snowparkに挑戦6
    簡単なSQLで理解しようとする「SELECT current_version()」
    コネクタはカーソルからデータ取得して、DataFrameに詰めなければならないのに対して、
    Snowpark経由は、SQLの結果をDataFrameとして取得できる点で違うのでは???
    ←コネクタ
    ↓Snowpark
    14

    View Slide

  16. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    休憩
    何はともあれ、Snowpark経由でSnowflakeに繋ぐことができた。
    こんなところだけで、スライドの6割が終わってしまった。
    せめて、もうちょっと効果的なもので動かしたい。
    しかし、いい例が思いつかない。。。
    またもやGetting Started系に頼るしかない。
    15

    View Slide

  17. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦1
    Snowflakeのチュートリアルが多く含まれている。
    https://quickstarts.snowflake.com/
    →今回は、赤丸の画像認識アプリを部分的に試す。(先週時点のキャプチャなので、内容が変わっ
    ている可能性あり)
    16

    View Slide

  18. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦2
    githubでは「sfguide-snowpark-pytorch-streamlit-openai-image-rec」というリポジトリに登録され
    ている。(1/17確認時点)
    17

    View Slide

  19. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦3
    18
    Snowflake
    stage(@dash_files)
    PyTorch
    Snowflake側でanacondaが使える(自社のsandbox
    にはその設定が有効化されてたと思う)ので、この
    PyTorchを使うことになる。
    他の準備として
    • 画像管理用のテーブル
    • ファイル格納用ステージ
    を作成しておく

    View Slide

  20. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦4
    ノートブックを実行し、セッションを作成後、以下の通りUDFをセットする。
    MobileNetV3を内部ステージにputする。
    putしたファイルをインポートする
    SnowflakeのAnacondaチャンネルからパッケージを取得する。
    19

    View Slide

  21. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦5
    UDFとして登録する
    たしかに関数にアノテーションのとおり登録されている。
    20
    そうやって関数を渡すのか。。

    View Slide

  22. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦6
    画面はファイルアップロードだけですが、
    これはStreamlitのコードでは以下でUDFを呼び出している。
    21

    View Slide

  23. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦7
    DatumStudioホームページにある画像をお借りする。
    22

    View Slide

  24. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    他のデモに挑戦8
    前のページの画像はhome theaterと分析された。
    23

    View Slide

  25. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    まとめと課題
    今回取り組んだこと
    Snowflakeの概念を学んだ。
    Snowparkを使って、簡単なアプリを動かした。
    課題
    オリジナリティ0なので、実データを使った例を作らないと。。。
    24

    View Slide

  26. 自己紹介
    発表概要
    動作環境
    Snowflakeに入門
    Snowparkに挑戦
    他のデモに挑戦
    まとめと課題
    おわり
    25

    View Slide