Configuração de Snowflake Notebooks

Snowflake Notebooks são objetos de primeira classe armazenados em um esquema em um banco de dados. Eles podem ser executados em duas arquiteturas de computação: warehouses e contêineres. Este tópico fornece as etapas para configurar sua conta como administrador e começar a usar o Snowflake Notebooks.

Configuração do administrador

Para configurar sua organização usando Snowflake Notebooks, execute as etapas a seguir:

  1. Analise os requisitos de conta e implementação.

  2. Aceitação dos termos do Anaconda para importar bibliotecas.

  3. Crie recursos e conceda privilégios para criar notebooks.

Analise os requisitos de conta e implementação

Certifique-se de que *.snowflake.app e *.snowflake.com estejam na lista de permissões da sua rede (incluindo sistemas de filtragem de conteúdo) e que possam se conectar ao Snowflake. Quando esses domínios estão na lista de permissões, seus aplicativos podem se comunicar com os servidores do Snowflake sem nenhuma restrição. No entanto, em alguns casos, adicionar esses domínios pode não ser suficiente devido a políticas de rede que bloqueiam subcaminhos deles. Se isso ocorrer, entre em contato com o administrador da rede.

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.

Aceitação dos termos do Anaconda para importar bibliotecas

Antes de começar a usar os pacotes fornecidos pelo Anaconda dentro do Snowflake, você deve reconhecer os Termos de ofertas externas.

Nota

É necessário usar a função ORGADMIN para aceitar os termos. Você só precisa aceitar os Termos de ofertas externas uma vez para sua conta Snowflake. Se você não tiver a função ORGADMIN, consulte Ativação da função ORGADMIN em uma conta.

  1. Faça login na Snowsight.

  2. Selecione Admin » Terms.

  3. Na seção Anaconda, selecione Enable.

  4. Na caixa de diálogo Anaconda Packages, clique no link para rever a página Termos de ofertas externas.

  5. Para concordar com os termos, selecione Acknowledge & Continue.

Se você encontrar um erro ao tentar aceitar os Termos de ofertas externas, isso pode ser devido à falta de informações em seu perfil de usuário, como nome, sobrenome ou endereço de e-mail.

Criação de recursos e concessão de privilégios

Para criar um notebook, uma função precisa de privilégios nos seguintes recursos:

  • Privilégio CREATE NOTEBOOK em um local

  • Privilégio USAGE em recursos de computação

  • (Opcional) Privilégio USAGE em integrações de acesso externo (EAIs)

Consulte Modelo para configuração do Notebooks para ver exemplos de scripts de criação e concessão de permissões nesses recursos.

Local

O local é onde um objeto de notebook é armazenado. O usuário final pode consultar qualquer banco de dados e esquema a que sua função tenha acesso.

  • Para alterar o contexto para um banco de dados ou esquema diferente, use os comandos USE DATABASE ou USE SCHEMA em uma célula SQL.

No Container Runtime, a função que está criando o notebook também exige o privilégio CREATE SERVICE no esquema.

Privilégio

Objeto

USAGE

Banco de dados

USAGE

Esquema

CREATE NOTEBOOK

Esquema

CREATE SERVICE

Esquema

As funções que possuem um esquema automaticamente têm o privilégio de criar notebooks dentro desse esquema, pois os proprietários podem criar qualquer tipo de objeto, inclusive notebooks.

Privilégio

Objeto

USAGE

Banco de dados

OWNERSHIP

Esquema

Recursos de computação

No Warehouse Runtime, o mecanismo de um notebook e os processos Python do código criado no notebook são executados no warehouse do Notebook, mas as consultas SQL e as consultas push down do Snowpark são executadas no warehouse de consultas. A função de proprietário do notebook requer o privilégio USAGE em ambos os warehouses.

Se um notebook for executado no Container Runtime, a função precisará do privilégio USAGE em um pool de computação, e não no warehouse do notebook. Os pools de computação são máquinas virtual baseadas em CPU ou GPU gerenciadas pelo Snowflake. Ao criar um pool de computação, defina o parâmetro MAX_NODES como maior que um, pois cada notebook exigirá um nó completo para ser executado. Para obter mais informações, consulte Snowpark Container Services: como trabalhar com pools de computação.

Privilégio

Objeto

USAGE

Warehouse de notebook ou pool de computação

USAGE

Warehouse de consulta

Integrações de acesso externo (opcional)

Se você permitir que determinadas funções acessem uma rede externa, use a função ACCOUNTADMIN para configurar e conceder o privilégio USAGE em integrações de acesso externo (EAIs). EAIs permitem o acesso a pontos de extremidade externos específicos para que suas equipes possam baixar dados e modelos, enviar solicitações e respostas de API, fazer login em outros serviços etc. Para notebooks executados no Container Runtime, EAIs também permitem que suas equipes instalem pacotes de repositórios como PyPi e Hugging Face.

Para obter detalhes sobre como configurar EAI para o seu notebook, consulte Configurar acesso externo para o Snowflake Notebooks.

Privilégio

Objeto

USAGE

Integração de acesso externo

Modelo para configuração do Notebooks

Como os notebooks são objetos com privilégios de criação e propriedade baseados em funções, é possível configurar o acesso ao recurso Notebooks de acordo com as necessidades de sua organização e equipe. Aqui estão alguns exemplos:

Como permitir que todos criem notebooks em um local específico

As etapas a seguir descrevem como configurar o acesso para a criação de notebooks em um local específico, concedendo o uso em um banco de dados e esquema.

Substitua <database> e <database.schema> pelo banco de dados e esquema específicos em que você deseja criar os notebooks:

----------------------------------
--       Location Setup         --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;

----------------------------------
--    Compute Resource Setup    --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;

-------------------------------------
-- Optional: External Access --
-------------------------------------

-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;

GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
Copy

Criação de uma função dedicada

Se quiser que apenas usuários específicos criem notebooks (supondo que eles ainda não sejam OWN de nenhum esquema), é possível criar uma função dedicada para controlar o acesso. Por exemplo:

CREATE ROLE notebooks_rl;
Copy

Conceda ROLE notebook_rl a usuários específicos. Em seguida, use o script acima para criar recursos e conceder permissões a essa função (substitua ROLE PUBLIC por ROLE notebook_rl).

Mecanismo de notebook

O mecanismo de notebook («kernel») e os processos Python são executados no warehouse do Notebook. A Snowflake recomenda que você comece com um warehouse X-Small para minimizar o consumo de crédito.

Enquanto você estiver usando o notebook (por exemplo, editando código, executando, reordenando ou excluindo células), ou se o notebook permanecer ativo dentro da configuração de tempo limite de inatividade, uma consulta EXECUTE NOTEBOOK será executada continuamente para indicar que o mecanismo do notebook está ativo e que uma sessão de notebook está em uso. É possível verificar o status dessa consulta em Query history. Enquanto EXECUTE NOTEBOOK estiver em execução, o warehouse do notebook também estará em execução. Quando EXECUTE NOTEBOOK for concluído, se não houver outras consultas ou trabalhos em execução no warehouse, ele será encerrado de acordo com sua política de suspensão automática.

Para encerrar a consulta EXECUTE NOTEBOOK (encerrar a sessão do notebook), siga estas etapas:

  1. Selecione Active ou selecione End session no menu suspenso Active.

  2. Em Query history, encontre a consulta EXECUTE NOTEBOOK correspondente e selecione Cancel query.

  3. Deixe o notebook atingir o tempo limite devido à inatividade com base em sua configuração de tempo ocioso. Se os parâmetros STATEMENT_TIMEOUT_IN_SECONDS e STATEMENT_QUEUED_TIMEOUT_IN_SECONDS no warehouse do notebook forem definidos para um valor pequeno, o notebook poderá ser desligado rapidamente ou não iniciar, independentemente da atividade do usuário.

Consultas

SQL e as consultas do Snowpark (por exemplo, session.sql) são enviadas para o warehouse de consultas, que é usado sob demanda. Quando as consultas SQL e Snowpark terminam de ser executadas, o warehouse de consulta é suspenso se nenhum outro trabalho estiver sendo executado nele fora do notebook. Selecione o tamanho do warehouse que melhor atende às suas necessidades de desempenho de consulta. Por exemplo, você pode querer executar grandes consultas SQL ou realizar operações de computação intensiva usando o Snowpark Python que exige um warehouse maior. Para operações que exigem alto uso de memória, considere usar um warehouse otimizado para o Snowpark.

É possível alterar o warehouse de consultas em Notebook Settings. Como alternativa, é possível executar o seguinte comando em qualquer célula SQL do notebook para alterar o warehouse de consultas para todas as consultas subsequentes na sessão atual do notebook:

USE WAREHOUSE <warehouse_name>;
Copy
Diagrama de computação do notebook

Tempo ocioso e reconexão

O tempo ocioso é acumulado sempre que não há atividade do usuário, como edição de código, execução de células, reordenação de células ou exclusão de células. Cada vez que você retoma a atividade, o tempo de inatividade é reiniciado. Quando o tempo ocioso atinge a configuração de tempo limite, a sessão do notebook é automaticamente encerrada.

Por padrão, os notebooks são suspensos após 60 minutos (3.600 segundos) de inatividade. Você pode definir o tempo limite de inatividade para um máximo de 72 horas (259.200 segundos). Para atualizar a configuração de tempo limite de inatividade, use os comandos CREATE NOTEBOOK ou ALTER NOTEBOOK para definir o valor da propriedade IDLE_AUTO_SHUTDOWN_TIME_SECONDS.

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Selecione o menu de reticências verticais Mais ações para planilha para configurar um novo horário.

  4. Selecione Notebook settings.

  5. Reinicie manualmente a sessão para que o novo tempo ocioso entre em vigor.

Antes do tempo limite de inatividade, a sessão do notebook permanecerá ativa até que o tempo limite de inatividade seja atingido, mesmo que o usuário atualize a página, visite outras partes do Snowsight ou desligue ou coloque o computador em modo de espera. Ao reabrir o mesmo notebook, o usuário se reconecta à mesma sessão, com todos os estados e variáveis da sessão preservados, o que lhe permite continuar trabalhando sem problemas. Observe, no entanto, que o estado dos widgets do Streamlit não será mantido.

Cada usuário individual que executa o mesmo notebook tem sua própria sessão independente. Elas não interferem umas nas outras.

Recomendações para otimização do custo

Como administrador de conta, considere as seguintes recomendações para controlar o custo de operação dos notebooks:

  • Peça às suas equipes que usem o mesmo warehouse (recomenda-se o X-Small) como um «warehouse de notebook» dedicado para executar as sessões de notebook e aumentar a simultaneidade. Observe que isso pode levar a inícios de sessão mais lentos (filas no warehouse) ou a erros de falta de memória se muitos notebooks forem executados simultaneamente.

  • Permita que suas equipes usem um warehouse com um valor STATEMENT_TIMEOUT_IN_SECONDS mais baixo para executar notebooks. Esse parâmetro do warehouse controla o tempo de duração de qualquer consulta, inclusive das sessões do notebook. Por exemplo, se o parâmetro for definido como 10 minutos, a sessão do notebook poderá ser executada por no máximo 10 minutos, independentemente de o usuário estar ativo na sessão do notebook durante esse tempo.

  • Peça às equipes que encerrem as sessões de notebook quando não tiverem a intenção de trabalhar ativamente na sessão.

  • Peça às suas equipes que minimizem a configuração de tempo limite de inatividade (por exemplo, 15 minutos) se não precisarem que a sessão seja executada por um longo período.

  • Como alternativa, abra um tíquete de suporte para definir um valor padrão para o tempo ocioso que se aplique a toda a sua conta. Esse valor ainda pode ser substituído no nível do notebook pelo proprietário do notebook.

Como começar a usar notebooks adicionando dados

Antes de começar a usar Snowflake Notebooks, adicione os dados ao Snowflake.

Você pode adicionar dados ao Snowflake de várias maneiras:

Você também pode adicionar dados de outras maneiras. Consulte Visão geral do carregamento de dados para mais detalhes.