既存のPythonパッケージのアップロード¶
Snowflake CLI では、 snow snowpark package
コマンドを使用して、既存のPythonパッケージをSnowparkインポートに追加できます。PyPi などのすでに実装されているパッケージを関数やプロシージャで使用できます。
SnowparkインポートにPythonパッケージを追加するには、次を実行します。
パッケージがすでに利用可能かどうかを確認する¶
パッケージがまだ利用可能でないかどうかを確認するには、snow snowpark package lookup
コマンドを使用します。
次の例は、Snowflake Anacondaチャネルで既に利用可能なパッケージを検索する方法を示しています。
snow snowpark package lookup numpy
Package `numpy` is available in Anaconda. Latest available version: 1.26.4.
Snowflake Anacondaチャネルでパッケージが利用できない場合は、次のようなメッセージが表示されます。
snow snowpark package lookup july
Package `july` is not available in Anaconda. To prepare Snowpark compatible package run:
snow snowpark package create july
詳細については、 snowpark package lookup コマンドをご参照ください。
パッケージをダウンロードしてSnowflakeアーティファクトを作成する¶
パッケージをダウンロードしてアップロードするSnowflakeアーティファクトを作成するには、snow snowpark package create
コマンドを使用します。
snow snowpark package create <name>
条件:
<name>
には、パッケージ名、パッケージの URL、ローカルファイルパスなど、pip
でサポートされている任意の要件指定子を指定できます。
追加オプション:
--allow-shared-libraries
: インストールされたパッケージを:codenowrap:pip
を通して使用する場合、共有(.so
/.dll
)ライブラリを許可します。--ignore-anaconda
: Snowflake Anacondaチャンネルのパッケージを検索しません。--index-url
: パッケージ検索に使うPythonパッケージインデックスのベース URL を指定します。この URL は、 PEP 503に準拠したリポジトリ(シンプルリポジトリ API)か、同じ形式でレイアウトされたローカルディレクトリを指す必要があります。--skip-version-check
: 要件とAnaconda間の依存関係のバージョン比較をスキップします。
次の例は、Snowflakeアーティファクトを作成するためのさまざまな状況を示しています。
例: Anaconda依存関係を持つパッケージの作成¶
この例では、ステージにアップロードして後でSnowpark Pythonアプリでインポートできるzipファイルとして、Pythonパッケージを作成します。「july」パッケージの依存関係がAnacondaチャネルで見つかったため、 .zip
ファイルから除外されました。このコマンドは、Snowparkプロジェクトの requirements.txt
に含める必要があるパッケージを表示します。
snow snowpark package create july==0.1
Package july.zip created. You can now upload it to a stage using
snow snowpark package upload -f july.zip -s <stage-name>`
and reference it in your procedure or function.
Remember to add it to imports in the procedure or function definition.
The package july==0.1 is successfully created, but depends on the following
Anaconda libraries. They need to be included in project requirements,
as their are not included in .zip.
matplotlib
numpy
例: --ignore-anaconda
オプションを使用したパッケージの作成¶
この例では、 requirements.txt
ファイルに依存関係を追加することなく、Snowparkプロジェクトで使用できる july.zip
パッケージを作成します。エラーメッセージは、一部のパッケージに共有ライブラリが含まれており、Windowsを使用してパッケージを作成する場合などに機能しない可能性があることを示しています。
snow snowpark package create july==0.1 --ignore-anaconda --allow-shared-libraries
2024-05-09 15:34:02 ERROR Following dependencies utilise shared libraries, not supported by Conda:
2024-05-09 15:34:02 ERROR contourpy
numpy
pillow
kiwisolver
matplotlib
fonttools
2024-05-09 15:34:02 ERROR You may still try to create your package with --allow-shared-libraries, but the might not work.
2024-05-09 15:34:02 ERROR You may also request adding the package to Snowflake Conda channel
2024-05-09 15:34:02 ERROR at https://support.anaconda.com/
Package july.zip created. You can now upload it to a stage using
snow snowpark package upload -f july.zip -s <stage-name>`
and reference it in your procedure or function.
Remember to add it to imports in the procedure or function definition.
例: Snowflake Anacondaチャネルで既に利用可能なパッケージの作成¶
この例では、パッケージがすでに存在しているため、作成に失敗しています。 --ignore-anaconda
オプションを使用して、強制的にパッケージを作成することもできます。
snow snowpark package create matplotlib
Package matplotlib is already available in Snowflake Anaconda Channel.
パッケージの作成の詳細については、 snowpark package create コマンドをご参照ください。
パッケージをSnowflakeステージにアップロードする¶
パッケージをアップロードするには、 snow snowpark package upload
コマンドを使用します。
このコマンドはPythonパッケージのzipファイルをSnowflakeステージにアップロードし、プロシージャまたは関数のインポートで参照できるようにします。
snow snowpark package upload --file="july.zip" --stage="packages"
Package july.zip UPLOADED to Snowflake @packages/july.zip.
Snowparkのプロシージャと関数でパッケージを使用する¶
プロシージャまたは関数でパッケージを使用するには、 snowflake.yml
の Snowpark定義 セクションの imports
パラメーターに追加します。
get_custom_package_version: handler: "functions.get_custom_package_version" signature: "" returns: string type: function imports: - "@packages/july.zip" meta: use_mixins: - snowpark_shared次に、関数ハンドラーにパッケージをインポートします。
# functions.py import july def get_custom_package_version(): return july.__VERSION__