Trabalhar com arquivos em notebooks¶
Este tópico descreve como você pode carregar e acessar arquivos de seus Snowflake Notebooks.
Arquivos em ambientes de notebook¶
Ao criar um novo notebook, o arquivo principal do notebook é criado. Por padrão, o arquivo do notebook recebe o mesmo nome do notebook.
Os arquivos são armazenados em um estágio interno que representa o ambiente do notebook e são persistentes entre sessões. Você pode visualizá-los na guia Files no lado esquerdo do notebook. Para exibir uma visualização do conteúdo do arquivo, selecione o nome do arquivo.
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ê encerrar a 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.
Persistência de arquivos entre 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 façam referência a esses arquivos em diferentes notebooks, use um estágio Snowflake para armazená-los. Você pode carregar arquivos do computador local para o estágio e usar as operações de arquivo da Snowpark API para acessá-los a partir do 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 a sessão e se reconectar, poderá executar o seguinte código em uma célula SQL para verificar se o arquivo ainda aparece:
LS @permanent_stage;
Usar a Snowsight para carregar arquivos em um notebook¶
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.
Nota
Se estiver fazendo upload de arquivos para usar como pacotes Python no notebook, considere que somente os arquivos .py
e .zip
são compatíveis com a execução no Warehouse Runtime. Para o Container Runtime, os arquivos .whl
(wheel) também são compatíveis. Se estiver importando um pacote como um arquivo .zip
, certifique-se de que haja um arquivo __init__.py
na raiz para indicar que se trata de um pacote Python.
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.
Nota
Somente os estágios internos são compatíveis. Não há suporte para estágios externos (por exemplo, Amazon S3, Google Cloud Storage ou Azure Blob Storage).
Usar outros ambientes de edição para fazer carregar ou baixar arquivos¶
Além de usar o navegador de arquivos na Snowsight, você também pode trabalhar com arquivos no estágio do Notebooks usando uma sessão local do Snowpark Python ou SnowSQL.
Sessão local do Snowpark Python¶
Você pode carregar e baixar arquivos do seu computador local para um estágio de notebook usando os métodos session.file.put
e session.file.get
no Snowpark Python. Para isso, é necessário iniciar uma sessão do Snowpark no seu ambiente de edição local (não na Snowsight). Por exemplo:
# Upload a local file to the notebook stage
res = session.file.put("aaa.csv", """snow://notebook/DEMO_DB.PUBLIC."JSMITH dbapi test"/versions/live""", overwrite=True)
# Download a file from the notebook stage to your local computer
res = session.file.get("""snow://notebook/DEMO_DB.PUBLIC."JSMITH dbapi test"/versions/live/aaa.json""", "aaa.csv")
Nota
Esse método não funciona a partir do SnowSQL CLI. Você deve executar o método em um ambiente Python com uma sessão ativa do Snowpark.
Comandos SnowSQL¶
Você também pode carregar ou baixar arquivos do estágio do Notebooks usando diretamente os comandos SnowSQL:
-- Download a file from the notebook stage to your local computer
GET 'snow://notebook/SNOWPUBLIC.NOTEBOOKS."ADMIN_SPCS"/versions/live/ADMIN_SPCS.ipynb' 'file://download';
-- Upload a file from your local computer to the notebook stage
PUT 'file://test.json' 'snow://notebook/SNOWPUBLIC.NOTEBOOKS.ADMIN_SPCS/versions/live' overwrite = TRUE;
Antes de executar esses comandos, certifique-se de ter definido o banco de dados, o esquema e o warehouse apropriados na sessão do SnowSQL.
Sincronização com arquivos do Git¶
Se o notebook estiver conectado ao Git, quaisquer arquivos na mesma pasta do Git que o notebook serão exibidos na guia Files.
Para obter mais informações sobre como trabalhar com arquivos no Git, consulte Sincronizar notebooks 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 um caminho local com Python¶
Em geral, as bibliotecas Python usam o caminho local do 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 ao caminho do 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'
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 são exibidos na guia Files. No entanto, você ainda pode usar o arquivo no código do 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}\n{"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.