Carregamento de um pacote Python existente¶
O Snowflake CLI permite que você adicione pacotes Python existentes às importações do Snowpark usando os comandos snow snowpark package
. Você pode usar pacotes já implementados, como os de PyPi, em suas funções e procedimentos.
Para adicionar um pacote Python às importações do Snowpark, faça o seguinte:
Verificação se um pacote já está disponível¶
Para verificar se um pacote ainda não está disponível, use o comando de pesquisa de pacote snow snowpark package lookup
.
O exemplo a seguir ilustra a busca por um pacote que já está disponível no canal Snowflake Anaconda:
snow snowpark package lookup numpy
Package `numpy` is available in Anaconda. Latest available version: 1.26.4.
Se um pacote não estiver disponível no canal Snowflake Anaconda, você poderá receber uma mensagem semelhante à seguinte:
snow snowpark package lookup july
Package `july` is not available in Anaconda. To prepare Snowpark compatible package run:
snow snowpark package create july
Para mais informações, consulte o comando snowpark package lookup.
Download de um pacote e criação de um artefato Snowflake¶
Para baixar um pacote e criar um artefato Snowflake para upload, use o comando snow snowpark package create
.
snow snowpark package create <name>
onde:
<name >
pode ser qualquer especificador de requisito compatível compip
, como um nome de pacote, um URL para um pacote ou um caminho de arquivo local.
Opções adicionais:
--allow-shared-libraries
: Permite bibliotecas compartilhadas (.so
/.dll
) ao usar pacotes instalados através depip
.--ignore-anaconda
: não procura pacotes no canal Snowflake Anaconda.--index-url
: especifica o URL básico do Python Package Index a ser usado para pesquisa de pacotes. Esse URL deve apontar para um repositório compatível com PEP 503 (a API do repositório simples) ou um diretório local disposto no mesmo formato.--skip-version-check
: ignora a comparação de versões de dependências entre requisitos e Anaconda.
Os exemplos a seguir ilustram algumas situações diferentes para criar artefatos Snowflake:
Exemplo: criar um pacote com dependências do Anaconda¶
Este exemplo cria um pacote Python como um arquivo zip que pode ser carregado em um estágio e posteriormente importado por um aplicativo Snowpark Python. As dependências do pacote “july” são encontradas no canal Anaconda, então elas foram excluídas do arquivo .zip
. O comando exibe os pacotes que você precisa incluir no requirements.txt
de seu projeto Snowpark.
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
Exemplo: criar um pacote usando a opção --ignore-anaconda
¶
Este exemplo cria o pacote july.zip
que você pode usar em seu projeto Snowpark sem precisar adicionar nenhuma dependência ao arquivo requirements.txt
. As mensagens de erro indicam que alguns pacotes contêm bibliotecas compartilhadas, o que pode não funcionar, como ao criar um pacote usando o 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.
Exemplo: criar um pacote já disponível no canal Snowflake Anaconda¶
Este exemplo falha ao criar o pacote porque ele já existe. Você ainda pode criar o pacote à força usando a opção --ignore-anaconda
.
snow snowpark package create matplotlib
Package matplotlib is already available in Snowflake Anaconda Channel.
Para obter mais informações sobre como criar um pacote, consulte o comando snowpark package create.
Carregamento do pacote em um estágio Snowflake¶
Para enviar seu pacote, use o comando snow snowpark package upload
.
Este comando carrega um arquivo zip do pacote Python para um estágio do Snowflake para que ele possa ser referenciado nas importações de um procedimento ou função.
snow snowpark package upload --file="july.zip" --stage="packages"
Package july.zip UPLOADED to Snowflake @packages/july.zip.
Uso do pacote em procedimentos e funções do Snowpark¶
Para usar o pacote em procedimentos ou funções, adicione-o ao parâmetro imports
da seção definição do Snowpark em snowflake.yml
.
get_custom_package_version: handler: "functions.get_custom_package_version" signature: "" returns: string type: function imports: - "@packages/july.zip" meta: use_mixins: - snowpark_sharedEm seguida, importe seu pacote no manipulador de funções.
# functions.py import july def get_custom_package_version(): return july.__VERSION__