こんにちは、夜見ている方はこんばんは、yokochanです。
Snowflakeを使っていて、Snowparkというものがあることは知っていたもののなかなか手を付けずにいましたが、このたびようやく少しだけ触れてみたのでわかったことを書いてみようと思います。
Snowparkとは?
まずは”Snowpark”と調べて一番最初に出てくるSnowflakeのページに書いてある説明を見てみましょう。(引用元)
Snowflakeの新しいデベロッパーフレームワークであるSnowpark(プレビュー公開中)では、データエンジニア、データサイエンティスト、データデベロッパーが単一のプラットフォーム内で自分の好みの言語を使って自分の使い慣れた方法でコーディングを行い、パイプライン、MLワークフロー、データアプリをより迅速かつ安全に実行できます。
Snowpark APIは、ScalaやJavaなどのデベロッパーがよく使う言語に、緊密に統合されたDataFrame型プログラミングをもたらします(プレビュー公開中)。Snowpark UDFを使用すると、データユースケースの幅を簡単に広げ、Java UDF、JavaScript UDF、外部関数、Python UDF(プレビュー公開中)などをSnowflake内で実行できます。Snowparkは、複雑なデータパイプラインの構築を大幅に簡素化し、デベロッパーがデータの移動なしにSnowflakeと直接やり取りできるよう設計されています。
とのことです。僕は初めてこれを読んだときに「はて……?」という感じでした。
なので、自分なりの解釈でSnowparkを簡単に説明すると、
- いつも使っている開発のプログラミング言語でSnowflakeのテーブルを操作できるよ!
- パイプラインや機械学習、アプリなどのライブラリを用意してるよ!
- SnowparkAPIを使えばSnowflakeのリソースでコードを実行できるよ!
- UDF(自分で作った関数)もSnowflake内で実行できるよ!
みたいな感じです。
とりあえず、Pythonで開発してるときにわざわざSQL叩いてデータ引っこ抜いてそれをPythonに食わせたりしなくても、ライブラリを使う感覚でSnowflakeのデータ使えるよってイメージかな、と理解しました。
僕は今回、Snowpark for Pythonを使うつもりで調べたのでPython中心にはなりますが、Snowpark自体はJavaとScalaにも対応しています。
SnowparkAPIの仕組み
プログラム上でSnowparkAPIを記述すると、Snowflake側でSQLクエリに変換してそのクエリを実行します。
つまり、見た目上はPythonだけど動いているのはSnowflakeのSQLということになります。わーお。
Pythonってよくパフォーマンスが微妙とか言われがちですが、うまく使えばSnowflakeのXLとかの強力なウェアハウスで計算をぶん回してパフォーマンス向上が狙えるってことかな。それができれば喜ぶ人たくさんいるんじゃないかな~^^
Snowpark for Pythonの始め方
Snowparkの始め方はマジで簡単です。
既に開発環境が整っている方はパッケージをインストールするだけです。
condaの方は
conda install snowflake-snowpark-python
pipの方は
pip install snowflake-snowpark-python
でパッケージをインストールできます。
詳細は公式ドキュメントに記載してあるのでご自身の環境に合わせて設定を進めてください。
また、クイックスタートやチュートリアルを利用するのもおススメです。
では、前編はこのあたりで。
後編では具体的な関数の使い方や使ってみた感想などを書いてますので、気になる方はぜひ続きをご覧くださいませ~