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()
Copy

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()
Copy

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;
Copy

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()
Copy

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
Copy

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;
Copy

Usar a Snowsight para carregar arquivos em um notebook

Você pode carregar arquivos do computador local para serem usados no notebook Snowflake.

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone Adição de um bloco de painel e selecione os arquivos para upload.

  4. Navegue e selecione ou arraste e solte arquivos na caixa de diálogo.

  5. 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")
Copy

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;
Copy

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")
Copy

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>
Copy

Para encontrar o caminho de estágio associado aos arquivos no estágio de seu notebook usando o menu Copy path:

  1. Faça login no Snowsight.

  2. Selecione Projects » Notebooks.

  3. Na aba Files, ao lado do explorador de objetos de banco de dados, selecione o ícone Mais opções ao lado do arquivo cujo caminho você deseja obter.

  4. 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'
Copy

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
    
    Copy
  • A abertura de outro arquivo .ipynb que não seja o arquivo principal do notebook não é compatível.

Recursos adicionais