Sobre a Streamlit in Snowflake

Atenção

Este recurso está disponível para contas em regiões comerciais do AWS e Microsoft Azure. AWS PrivateLink não é suportado.

Este tópico descreve como usar Streamlit in Snowflake para desenvolver e executar aplicativos Streamlit.

Sobre a Streamlit in Snowflake

Streamlit é uma biblioteca Python de código aberto que facilita a criação e o compartilhamento de aplicativos da web personalizados para aprendizado de máquina e ciência de dados. Ao usar o Streamlit, você pode criar e implantar rapidamente aplicativos de dados poderosos. Para obter mais informações sobre a biblioteca de código aberto, consulte a documentação da biblioteca Streamlit.

Streamlit in Snowflake ajuda os desenvolvedores a criar, implantar e compartilhar aplicativos Streamlit com segurança na nuvem de dados do Snowflake. Usando Streamlit in Snowflake, você pode criar aplicativos que processam e usam dados no Snowflake sem mover dados ou código do aplicativo para um sistema externo.

Pré-requisitos para o uso do Streamlit in Snowflake

Para usar Streamlit in Snowflake certifique-se de atender aos seguintes pré-requisitos:

Privilégios necessários para criar e usar um aplicativo Streamlit

Dentro de Streamlit in Snowflake, um aplicativo Streamlit é um objeto protegível que segue a estrutura de controle de acesso Snowflake. Os aplicativos Streamlit usam um modelo de permissão baseado nos direitos do proprietário. Consulte Noções básicas sobre os direitos do proprietário e aplicativos Streamlit in Snowflake para obter mais detalhes.

Um editor de aplicativo e o proprietário do esquema que contém o aplicativo Streamlit podem determinar quais funções têm permissão para usar o aplicativo. Os usuários podem interagir com o aplicativo e ver qualquer coisa exibida pelo aplicativo Streamlit. Os usuários têm a mesma visão do aplicativo que o proprietário.

Para obter mais informações, consulte Compartilhamento de um aplicativo Streamlit.

Privilégios necessários para criar um aplicativo Streamlit

Os aplicativos Streamlit são objetos no nível do esquema. Para criar e editar um aplicativo Streamlit usando Streamlit in Snowflake, você deve usar uma função que tenha os seguintes privilégios concedidos no esquema e no banco de dados que contém o aplicativo Streamlit:

  • USAGE

  • CREATE STREAMLIT

  • CREATE STAGE

Use o comando GRANT <privilégios> para conceder esses privilégios a uma função, conforme mostrado nos exemplos a seguir:

GRANT USAGE ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE mydb TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
Copy

Privilégios necessários para visualizar um aplicativo Streamlit

Para visualizar um aplicativo Streamlit, você deve ter uma conta Snowflake e estar conectado nela. Além disso, sua conta deve receber uma função com o privilégio USAGE no seguinte:

  • Banco de dados que contém o aplicativo Streamlit.

  • Esquema que contém o aplicativo Streamlit.

  • Aplicativo Streamlit.

Na maioria dos casos, quando o proprietário do aplicativo compartilha um aplicativo Streamlit com outra função, o privilégio USAGE é concedido automaticamente à nova função. No entanto, se um aplicativo Streamlit for criado em um esquema com MANAGED ACCESS, o privilégio USAGE deverá ser concedido manualmente à nova função.

O proprietário do esquema ou uma função com o privilégio MANAGE GRANTS no esquema deve conceder o privilégio USAGE usando o comando GRANT <privilégios>, conforme mostrado nos exemplos a seguir:

GRANT USAGE ON DATABASE mydb.streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA mydb.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT mydb.streamlit_app to ROLE streamlit_user;
Copy

Nota

Concessões futuras não são suportados para objetos STREAMLIT.

Versões suportadas das bibliotecas Streamlit

Streamlit in Snowflake suporta v1.22.0 das bibliotecas Streamlit. O suporte para versões posteriores das bibliotecas Streamlit será incluído à medida que forem lançadas.

Pacotes externos suportados

Por padrão, Streamlit in Snowflake inclui os pacotes python, streamlit e snowflake-snowpark-python pré-instalados em seu ambiente. O ambiente também tem acesso às dependências exigidas por esses pacotes.

Você pode instalar pacotes adicionais em seu aplicativo Streamlit. Consulte o Canal Snowflake Anaconda para obter uma lista de pacotes suportados.

Consulte os tópicos a seguir para obter informações sobre como incluir um pacote compatível em seu aplicativo Streamlilt:

Considerações de simultaneidade para Streamlit in Snowflake

Streamlit in Snowflake fornece otimização de sessão e escalonamento automático no Snowflake para lidar com períodos de maior demanda por um aplicativo Streamlit. Streamlit in Snowflake usa uma combinação de instâncias de serviços de nuvem e instâncias de warehouse virtual. Consulte Conceitos-chave e arquitetura para obter mais informações.

Para manter a integridade do Snowflake, Streamlit in Snowflake impõe limites por instância, por conta e por usuário no número de sessões Streamlit simultâneas que uma instância de serviços de nuvem pode lidar. As sessões Streamlit têm balanceamento de carga entre essas instâncias até que todas as instâncias atinjam seu limite de sessões simultâneas. Quando um limite é atingido, a instância é dimensionada automaticamente para suportar sessões adicionais.

Nota

As solicitações de usuários do aplicativo Streamlit podem ser limitadas temporariamente. Os usuários poderão ver uma mensagem «Aguarde» quando o escalonamento automático for iniciado.

Considerações sobre faturamento para Streamlit in Snowflake

Streamlit in Snowflake requer um warehouse virtual para executar um aplicativo Streamlit e realizar consultas SQL. Para executar um aplicativo Streamlit, você deve selecionar um único warehouse virtual para executar o próprio aplicativo e suas consultas. Este warehouse permanece ativo enquanto a conexão do WebSocket do aplicativo estiver ativa. A conexão do WebSocket, que mantém o warehouse virtual do aplicativo Streamlit ativo, expira aproximadamente 15 minutos após o último uso do aplicativo.

Para conservar os créditos, você pode suspender o warehouse virtual. Como alternativa, você pode fechar a página da Web que executa o aplicativo, o que permite que o warehouse virtual em execução seja suspenso automaticamente.

Diretrizes para selecionar um warehouse em Streamlit in Snowflake

Ao executar um aplicativo Streamlit em Streamlit in Snowflake, vários fatores podem afetar o desempenho, incluindo a complexidade do aplicativo Streamlit, a disponibilidade de warehouses, a latência e o custo. As seções a seguir fornecem diretrizes gerais para usar warehouses virtuais em Streamlit in Snowflake.

Uso de warehouses menores

Ao executar um aplicativo Streamlit em Streamlit in Snowflake, você deve selecionar o menor warehouse possível.

Durante a execução, um warehouse mantém um cache dos pacotes Python usados por um aplicativo Streamlit. O armazenamento em cache de pacotes Python melhora o desempenho para carregamentos posteriores de aplicativos usando a versão em cache de um pacote em vez de fazer download dos pacotes novamente. O cache é removido quando o warehouse é suspenso, o que pode resultar em um carregamento mais lento do aplicativo inicialmente após a retomada do warehouse. À medida que o warehouse retomado é executado e executa mais aplicativos, o cache do pacote é reconstruído e os aplicativos que conseguem aproveitar o cache terão melhor desempenho de carregamento de aplicativos.

Observe que o faturamento de crédito por segundo e a suspensão automática fornecem flexibilidade para começar com warehouses menores e, em seguida, ajustar o tamanho do warehouse para corresponder à carga de trabalho do aplicativo Streamlit. Você pode diminuir o tamanho de um warehouse a qualquer momento. Consulte Alteração do warehouse de um aplicativo Streamlit para obter mais informações.

Uso de warehouses dedicados

Ao usar Streamlit in Snowflake, Snowflake recomenda usar warehouses dedicados para executar aplicativos Streamlit. Isso permite isolar os custos de execução de aplicativos Streamlit. Um warehouse dedicado também pode melhorar o tempo de carregamento do aplicativo, uma vez que o warehouse não precisa gerenciar outras cargas de trabalho.

Consulte Considerações sobre warehouses para obter mais informações.