Solução de erros nos Snowflake Notebooks¶
Os cenários a seguir podem ajudar você a solucionar problemas que podem ocorrer ao usar os Snowflake Notebooks.
O número total de notebooks excede o limite no Snowsight¶
O seguinte erro ocorre quando o número total de notebooks em sua conta excede 6.000 e você atualiza a lista de Notebooks:
Os usuários ainda podem criar novos notebooks; no entanto, a Snowflake recomenda que você remova os notebooks que não estão mais sendo usados pela conta.
Erro de Notebooks (Warehouse Runtime) ao atualizar um pacote¶
A Snowflake tornou obsoleto o pacote snowflake-ml antigo, que não é mais compatível. Ele foi removido do seletor de pacotes e não está disponível no canal Snowflake Anaconda. Se você estiver usando snowflake-ml e tentar adicionar, remover ou atualizar pacotes em seus notebooks, esses notebooks falharão porque snowflake-ml não estará mais acessível.
Para evitar problemas, mude para o snowflake-ml-python, que é o pacote correto para o Snowflake ML.
Erro do Plotly¶
O Plotly mudará para WebGL se houver mais de 1.000 pontos de dados.
AttributeError: NoneType¶
O seguinte erro ocorre quando uma célula é renomeada com o mesmo nome de uma variável existente no notebook:
Por exemplo, você tem o seguinte em uma célula Python chamada cell1:
Se você renomear cell2 para “sessão” e referenciar “sessão” na cell3, o Notebooks tentará referenciar “sessão” (o nome da célula), e não a sessão do Snowpark, causando um erro.
Desconexão precoce¶
A sessão do notebook é executada como um procedimento armazenado. O tempo limite é de 30 minutos no Warehouse Runtime e de 60 minutos no Container Runtime. Se o notebook se desconectar inesperadamente antes do tempo limite, o ACCOUNTADMIN ou o proprietário do warehouse pode ter definido o parâmetro STATEMENT_TIMEOUT_IN_SECONDS como um valor específico (por exemplo, 5 minutos), o que limita o tempo de execução de todas as instruções no warehouse, inclusive as sessões do notebook. Esse parâmetro é definido no nível do warehouse ou da conta e, quando é definido para ambos, um warehouse e uma sessão, o menor valor diferente de zero é aplicado.
Para permitir que o notebook seja executado por mais tempo, você pode usar o warehouse padrão SYSTEM$STREAMLIT_NOTEBOOK$WAREHOUSE ou alterar o parâmetro STATEMENT_TIMEOUT_IN_SECONDS para uma duração maior.
Para obter detalhes sobre a configuração de tempo ocioso, consulte Tempo ocioso e reconexão.
Falha ao reconectar¶
Se os cookies não estiverem ativados no navegador, o usuário não poderá se reconectar automaticamente à sessão do notebook enquanto ela ainda estiver ativa (antes de atingir o tempo limite devido à inatividade). Ao reabrir o notebook, é exibida uma mensagem de erro:
Reiniciar a sessão encerrará a consulta atual em EXECUTE NOTEBOOK e iniciará uma nova sessão. O término da sessão encerrará a consulta atual em EXECUTE NOTEBOOK.
Se você não tomar nenhuma dessas ações, a consulta EXECUTE NOTEBOOK atual continuará sendo executada no warehouse, conforme mostrado em Query History.
Falha ao conectar devido ao firewall¶
O seguinte pop-up ocorre quando você tenta iniciar seu notebook:
Ensure that *.snowflake.app and *.snowflake.com are on the allowlist in your network (including content filtering systems), and
can connect to Snowflake. For Streamlit apps using container runtimes, also add *.snowflakecomputing.app to the allowlist.
When these domains are on the allowlist, your apps can communicate with Snowflake servers without any restrictions.
However, in some cases adding these domains may not be sufficient due to network policies blocking subpaths under them. If this occurs,
contact your network administrator.
Além disso, para evitar problemas de conexão com o backend do Snowflake, certifique-se de que os WebSockets não estão bloqueados na sua configuração de rede.
Pacotes ausentes¶
A seguinte mensagem é exibida em uma saída de célula se você estiver tentando usar um pacote que não está instalado em seu ambiente de notebook:
Importe o pacote necessário seguindo as instruções na página Importação de pacotes Python para uso em notebooks.
Pacote ausente do notebook existente¶
Novas versões de notebooks são lançadas continuamente e os notebooks são atualizados automaticamente para a versão mais recente. Às vezes, ao atualizar um notebook antigo, os pacotes no ambiente de notebook não são compatíveis com a atualização. Isso pode fazer com que o notebook não inicie.
A seguir está um exemplo de uma mensagem de erro quando o pacote Libpython está ausente:
Para resolver esse erro, tente as seguintes etapas:
Atualize a página da Web e inicie o notebook novamente.
Se o problema persistir, abra o seletor de pacotes e verifique se todos os pacotes instalados são válidos. No menu suspenso de cada pacote, é possível ver as versões disponíveis. Selecionar a versão mais recente do pacote geralmente resolve o erro.
Notebook ausente¶
Os notebooks são objetos no nível do esquema, o que significa que são armazenados em um esquema específico no banco de dados. Se um esquema for descartado (excluído), todos os objetos contidos nele (incluindo os notebooks) também serão descartados. Se você não vir um notebook que existia, talvez o esquema ao qual ele pertencia tenha sido descartado. Nesse caso, o notebook será excluído permanentemente e não poderá ser recuperado.
Para ajudar a evitar perda acidental de notebooks:
Revise os objetos contidos em um esquema antes de descartá-lo.
Limite os privilégios de descarte de esquemas para evitar exclusões acidentais ou não autorizadas.
Considere exportar o conteúdo do notebook para scripts controlados por versão fora do notebook.
Se seu notebook estiver ausente e o esquema ainda existir, certifique-se de que sua função atual tenha os privilégios necessários para visualizar o esquema e seus objetos.
Problema no sistema de arquivos somente leitura¶
Algumas bibliotecas Python baixam ou armazenam em cache dados em um diretório de usuário local. No entanto, o diretório de usuário padrão /home/udf é somente leitura. Para contornar isso, defina o caminho como /tmp, que é um local gravável. Observe que a variável de ambiente usada para definir o diretório de gravação pode variar dependendo da biblioteca que você está usando. A seguir está uma lista de bibliotecas conhecidas que apresentam esse problema:
Matplotlib
HuggingFace
CatBoost
Exemplo de Matplotlib¶
É possível ver esse aviso ao usar o matplotlib:
Resolva esse aviso usando este código, que define a variável MPLCONFIGDIR como /tmp/:
Exemplo de Hugging Face¶
É possível ver esse aviso ao usar o Hugging Face:
O código a seguir define as variáveis HF_HOME e SENTENCE_TRANSFORMERS_HOME para /tmp/ para se livrar deste erro:
A mensagem de saída é muito grande ao usar df.collect()¶
A seguinte mensagem é exibida na saída da célula quando você executa df.collect():
Snowflake Notebooks trunca automaticamente os resultados na saída da célula para grandes conjuntos de dados nos seguintes casos:
Todos os resultados de células SQL.
Resultados de células Python se for um
snowpark.Dataframe.
O problema com a célula acima é que df.collect() retorna List em vez de snowpark.Dataframe. As listas não são truncadas automaticamente. Para contornar esse problema, emita diretamente os resultados do DataFrame.
Notebook trava ao usar df.to_pandas() no Snowpark DataFrames¶
Ao executar df.to_pandas(), todos os dados são carregados na memória e podem resultar no encerramento da sessão do Notebook se o tamanho dos dados exceder o limite de memória do warehouse do Notebook associado.
Exemplo 1: exportação de uma tabela do Snowpark para o DataFrame pandas¶
Solução alternativa para o exemplo 1¶
O exemplo a seguir mostra como é possível reescrever o código para ler a tabela com o Snowpark pandas.
Exemplo 2: referência a uma célula SQL que contém resultados grandes¶
Se você tiver o seguinte código em uma célula SQL nomeada cell1, o resultado de saída será 500 milhões de linhas.
Portanto, ao buscar os resultados em um DataFrame pandas, o notebook trava porque os dados são muito grandes para caber na memória:
Em geral, para grandes conjuntos de dados, o Snowflake recomenda que você evite usar df.to_pandas(). Em vez disso, para operar em seus dados com pandas, use a Snowpark pandas API e um warehouse otimizado para o Snowpark. A Snowpark pandas API permite que você execute seu código pandas diretamente nos dados Snowflake com a consulta realizada em SQL. Isso permite executar o código do pandas em dados que não cabem na memória do notebook.
Solução alternativa para o exemplo 2¶
No segundo exemplo de referência de célula acima, é possível converter o resultado da célula SQL em um DataFrame Snowpark primeiro. Em seguida, é possível convertê-lo em Snowpark pandas.
Para obter mais detalhes, consulte pandas on Snowflake em notebooks.
Não é possível se conectar devido ao tunelamento dividido de VPN¶
Se a VPN estiver configurada para usar o tunelamento dividido, é necessário adicionar *.snowflake.com e *.snowflake.app à lista de permissões de política de redes.
Erro de notebook não existe¶
A seguinte mensagem é exibida na saída da célula quando você tenta executar um notebook com um nome que contém caracteres especiais:
Os nomes dos notebooks são identificadores do Snowflake. Qualquer nome de notebook com caracteres especiais, como pontos e espaços, deve ser colocado entre aspas duplas para atender às regras de identificador.
Conflito de versão de pacote¶
Se você executar um notebook não interativo que carrega uma versão de pacote da imagem de base e, em seguida, tentar instalar uma nova versão, a nova versão não será carregada. Certifique-se de que a versão do pacote corresponda à imagem de base. Em um notebook interativo, você será solicitado a reiniciar o notebook para usar a nova versão.
Notebook SPCS agendado não consegue ser executado¶
Antes de executar um notebook agendado no Container Runtime, você deve criar um repositório de imagens. Se não houver um repositório de imagens, será exibido o seguinte erro:
Para obter detalhes sobre como criar um repositório de imagens, consulte CREATE IMAGE REPOSITORY.
Mensagens de log que não aparecem na saída¶
Se as mensagens de log não estiverem aparecendo na saída do notebook, certifique-se de que os logs sejam direcionados para stdout. Aqui está um exemplo de como configurar o registro em log corretamente:
Para destacar erros, você pode enviá-los para stderr usando uma abordagem semelhante. Como alternativa, se estiver trabalhando com o Streamlit no Snowflake Notebooks, você pode usar as funções internas para obter uma formatação mais clara:
Não é possível executar o notebook¶
Quando você cria um notebook usando CREATE NOTEBOOK, o notebook não tem automaticamente uma versão ativa no estágio de versão. Se você tentar executar um notebook usando o EXECUTE NOTEBOOK sem antes definir uma versão ativa, ou se criar um notebook e ele for descartado, ocorrerá o seguinte erro:
Para resolver esse erro, use o seguinte comando para definir a versão ativa inicial: