Solução de problemas em UDFs de Python

Este tópico fornece informações de solução de problemas sobre UDFs (funções definidas pelo usuário) de Python.

Neste tópico:

Solução de problemas

Problema: uma biblioteca Python obrigatória não está disponível pelo Anaconda.

As bibliotecas Python de terceiros, que não têm extensões C/C, podem ser importadas por UDFs diretamente através dos estágios do Snowflake. Para obter mais informações, consulte Como criar uma UDF de Python com código carregado de um estágio.

Para saber como enviar uma solicitação de suporte para pacotes Anaconda adicionais, consulte Como usar pacotes de terceiros.

Problema: um UDF falha com o erro “memória disponível da função esgotada”

Reduza a quantidade de memória utilizada pelo UDF.

Verifique o código do UDF quanto a bugs ou vazamentos de memória.

Para obter mais informações, consulte Memória.

Problema: quero extrair o ZIP ou outros arquivos dentro de um UDF

Para ver um exemplo de como carregar um arquivo ZIP em um estágio do Snowflake e depois descompactá-lo no diretório /tmp dentro do UDF, consulte Como descompactar um arquivo preparado.

Problema: o desempenho do UDF é lento

Para obter mais informações sobre como melhorar o desempenho de UDFs, consulte Otimização para escala e desempenho.

Problema: a função ORGADMIN não está habilitada, portanto os pacotes Anaconda não podem ser usados

Ao percorrer as etapas para começar a usar pacotes de terceiros do Anaconda, a função de administrador da organização (ORGADMIN) é obrigatória.

Para resolver este problema, siga as instruções em Ativação da função ORGADMIN em uma conta.

Problema: a UDF falha com o erro «UnicodeDecodeError » ao ler um arquivo

Quando você usa a classe SnowflakeFile para ler arquivos que contêm dados não textuais, você deve especificar o modo de entrada como binário. Caso contrário, você pode encontrar o seguinte erro:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf7 in position 12: invalid start byte
Copy

Para resolver esse problema, especifique o modo de entrada como binário passando 'rb' para o argumento mode (o segundo argumento). Por exemplo:

with SnowflakeFile.open(file_name, 'rb') as f:
Copy

Dicas

O treinamento de modelos de machine learning (ML) podem consumir muitos recursos às vezes. Os warehouses otimizados para Snowpark são de um tipo de warehouse virtual do Snowflake que pode ser usado para cargas de trabalho que exigem uma grande quantidade de recursos de memória e computação. Para obter mais informações sobre modelos de machine learning e Snowpark Python, consulte Treinamento dos modelos de machine learning com Snowpark Python.

Se você usar uma UDF de Python em uma política de mascaramento, certifique-se de que o tipo de dados da coluna, a UDF e a política de mascaramento sejam correspondentes.

Para informações de solução de problemas sobre pacotes de terceiros, consulte Problemas conhecidos com pacotes de terceiros.