Trabalho com arquivos nos Snowflake Notebooks¶
Este tópico descreve como você pode carregar e acessar arquivos de seus Snowflake Notebooks.
Arquivos em ambientes de notebook¶
Quando você cria um novo notebook, dois arquivos são criados. Você pode vê-los em painel Files ao lado esquerdo do notebook. Os arquivos são armazenados em um estágio interno que representa seu ambiente de notebook. Os arquivos armazenados neste estágio interno são persistentes entre as sessões.
Arquivo do notebook principal: Por padrão, este é nomeado
notebook_app.ipynb
. Se seu notebook for criado a partir do Git ou carregado de outro arquivo.ipynb
, o nome do arquivo pode ser diferente.environment.yml: Este é um arquivo gerado automaticamente que descreve seu ambiente de notebook, como quais pacotes estão instalados.
Para inspecionar o conteúdo do arquivo, você pode selecionar o nome do arquivo e um pop-up aparecerá com uma versão preliminar do conteúdo do arquivo. Observe que os arquivos são somente leitura. Para modificar o conteúdo de um arquivo, você precisará baixá-lo, editá-lo localmente e depois carregar a cópia atualizada.
Sistema de arquivos temporário em um ambiente de notebook¶
Seu notebook tem um sistema de arquivos temporário que fica disponível durante uma sessão ativa. Todos os arquivos criados durante a sessão são salvos neste estágio temporário. Os arquivos no estágio temporário não estarão disponíveis depois que você sair da sessão atual do notebook.
O código a seguir cria um arquivo chamado myfile.txt
e escreve algum texto nele:
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
Você pode acessar este arquivo durante a mesma sessão em que ele foi criado.
Use o método listdir()
para listar arquivos no estágio temporário:
import os
os.listdir()
Agora desconecte-se de sua sessão atual e reconecte-se. Experimente o método listdir()
novamente e o arquivo myfile.txt
não será listado.
Arquivos persistentes em todas as sessões do notebook¶
Para que seus arquivos sejam persistentes em todas as sessões do Notebook:
Armazene arquivos em um estágio Snowflake¶
Se você quiser que seus arquivos sejam persistentes entre sessões e referenciem os arquivos em diferentes notebooks, use um estágio Snowflake para armazená-los. Você pode carregar arquivos de sua máquina local para o estágio e usar operações de arquivo da Snowpark API para acessá-los a partir de seu notebook.
Exemplo¶
Este exemplo mostra como criar um estágio e armazenar e recuperar arquivos dele em seu notebook.
Para criar um estágio chamado permanent_stage
, execute o seguinte código em um célula SQL:
CREATE OR REPLACE STAGE permanent_stage;
Em seguida, crie um arquivo chamado myfile.txt
com algum texto e execute o seguinte código em uma célula Python:
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
Observe que neste ponto, myfile.txt
é armazenado no sistema de arquivos temporário do notebook. Para mover isso para o estágio, você pode usar a Snowpark API para carregar o myfile.txt
para seu permanent_stage
:
from snowflake.snowpark.context import get_active_session
session = get_active_session()
put_result = session.file.put("myfile.txt","@PERMANENT_STAGE", auto_compress= False)
put_result[0].status
Se você desconectar sua sessão e reconectar, poderá executar o seguinte código em uma célula SQL para ver se o arquivo ainda está lá:
LS @permanent_stage;
Como adicionar arquivos ao notebook do computador local¶
Você pode carregar arquivos do computador local para serem usados no notebook Snowflake.
Faça login no Snowsight.
Selecione Projects » Notebooks.
Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone
e selecione os arquivos para upload.
Navegue e selecione ou arraste e solte arquivos na caixa de diálogo.
Selecione Upload para enviar seu arquivo.
Os arquivos enviados são salvos no estágio interno do notebook e são persistentes entre as sessões. Você pode referenciar arquivos enviados usando seus caminhos locais do arquivo do notebook. Consulte Referência a arquivos em notebooks.
Aviso
Se a sua sessão do notebook estiver ativa quando você carregar o arquivo, será necessário reiniciá-lo para que o arquivo carregado fique acessível. Este é um bug conhecido. A Snowflake recomenda adicionar todos os arquivos necessários antes de iniciar sua sessão para uso em seu notebook.
Sincronização com arquivos do Git¶
Se o notebook estiver conectado ao Git, todos os arquivos na mesma pasta Git de seu notebook serão exibidos na aba Files.
Para obter mais informações sobre como trabalhar com arquivos no Git, consulte Sincronização dos notebooks Snowflake com um repositório Git.
Referência a arquivos em notebooks¶
Cada arquivo no ambiente de notebook tem um caminho de estágio e um caminho local. Você pode usar esses caminhos para referenciar o arquivo no notebook.
Referência a caminho local com Python¶
Em geral, as bibliotecas Python usam o caminho local para o arquivo como referência ao arquivo. Por exemplo, o código a seguir acessa o arquivo data.csv
carregado no mesmo diretório em que este notebook está sendo executado:
import pandas as pd
df = pd.read_csv("data.csv")
Referência a caminho de estágio com SQL¶
Com SQL, o Snowflake faz referência a arquivos com base no caminho de estágio. O caminho de estágio para um arquivo em seu notebook é baseado no seguinte formato:
snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/<file_name>
Para encontrar o caminho de estágio associado aos arquivos no estágio de seu notebook usando o menu Copy path:
Faça login no Snowsight.
Selecione Projects » Notebooks.
Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone
ao lado do arquivo cujo caminho você deseja obter.
Selecione Copy path. Isso copia o caminho de arquivo para sua área de transferência.
Em seguida, você pode usar a seguinte instrução SQL para listar os detalhes do arquivo de estágio:
LIST 'snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/data.csv'
Requisitos de controle de acesso¶
Você precisa usar uma função com os seguintes privilégios para acessar arquivos de um estágio em um notebook.
Privilégio |
Objeto |
---|---|
USAGE |
Estágio que contém os arquivos. |
Limitações e considerações¶
Carregue os arquivos antes de iniciar sua sessão de notebook. Se você carregar arquivos após o início de uma sessão, será necessário reiniciá-la para acessar os arquivos.
Não há restrições quanto aos tipos de arquivo para upload.
O limite de tamanho por arquivo é de até 250 MB.
Os arquivos gravados em um caminho local no notebook não aparecem na UI Files. Este é um bug conhecido. No entanto, você ainda poderá usar o arquivo no código de seu notebook.
Por exemplo, se você criar um arquivo,
data.json
, poderá acessá-lo conforme mostrado no código a seguir, mesmo que ele não esteja visível na UI Files:# Generate sample JSON file with open("data.json", "w") as f: f.write('{"fruit":"apple", "size":3.4, "weight":1.4},{"fruit":"orange", "size":5.4, "weight":3.2}') # Read from local JSON file (File doesn't show in UI) df = pd.read_json("data.json",lines=True) df
A abertura de outro arquivo
.ipynb
que não seja o arquivo principal do notebook não é compatível.
Recursos adicionais¶
Para obter outros exemplos, consulte os seguintes notebooks de exemplo no Github: