Mit Dateien in Notebooks arbeiten

Unter diesem Thema wird beschrieben, wie Sie Dateien in Snowflake Notebooks hochladen und darauf zugreifen.

Dateien in Notebook-Umgebungen

Wenn Sie ein neues Notebook anlegen, wird die Hauptdatei des Notebooks erstellt. Standardmäßig erhält die Notebook-Datei denselben Namen wie das Notebook.

Die Dateien werden in einem internen Stagingbereich gespeichert, der Ihre Notebook-Umgebung darstellt, und bleiben zwischen den Sitzungen erhalten. Sie können sie auf der Registerkarte Files auf der linken Seite des Notebooks einsehen. Um eine Vorschau auf den Inhalt der Datei anzuzeigen, wählen Sie den Dateinamen.

Temporäres Dateisystem in einer Notebook-Umgebung

Ihr Notebook verfügt über ein temporäres Dateisystem, das während einer aktiven Sitzung verfügbar ist. Alle während der Sitzung erstellten Dateien werden in diesem temporären Stagingbereich gespeichert. Dateien im temporären Stagingbereich sind nach Beendigung der aktuellen Notebook-Sitzung nicht mehr verfügbar.

Der folgende Code erstellt eine Datei namens myfile.txt und schreibt einen Text hinein:

with open("myfile.txt",'w') as f:
    f.write("abc")
f.close()
Copy

Sie können auf diese Datei in derselben Sitzung zugreifen, in der sie erstellt wurde.

Verwenden Sie die Methode listdir(), um die Dateien im temporären Stagingbereich aufzulisten:

import os
os.listdir()
Copy

Trennen Sie nun die Verbindung zu Ihrer aktuellen Sitzung, und stellen Sie sie wieder her. Wenn Sie die Methode listdir() erneut verwenden, wird die Datei myfile.txt nicht mehr aufgelistet.

Dateien über Notebook-Sitzungen hinweg erhalten

Um Dateien über Notebook-Sitzungen hinweg zu erhalten, gibt es folgende Optionen:

Dateien in Snowflake-Stagingbereich speichern

Wenn Sie möchten, dass Ihre Dateien zwischen den Sitzungen bestehen bleiben und auf diese Dateien in verschiedenen Notebooks verweisen, verwenden Sie einen Snowflake Stagingbereich, um sie zu speichern. Sie können Dateien von Ihrem lokalen Computer in den Stagingbereich hochladen und mit den Dateioperationen von Snowpark-API von Ihrem Notebook aus auf sie zugreifen.

Beispiel

Dieses Beispiel zeigt, wie Sie einen Stagingbereich erstellen und dann Dateien mit Ihrem Notebook darin speichern und von dort abrufen.

Um einen Stagingbereich namens permanent_stage zu erstellen, führen Sie den folgenden Code in einer SQL-Zelle aus:

CREATE OR REPLACE STAGE permanent_stage;
Copy

Um eine Datei mit dem Namen myfile.txt zu erstellen, die einen Text enthält, führen Sie den folgenden Code in einer Python-Zelle aus:

with open("myfile.txt",'w') as f:
  f.write("abc")
f.close()
Copy

Beachten Sie, dass myfile.txt zu diesem Zeitpunkt im temporären Dateisystem des Notebooks gespeichert ist. Um diese Datei in den Stagingbereich zu verschieben, können Sie mit der Snowpark-API myfile.txt in permanent_stage hochladen:

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

Wenn Sie die Verbindung zu Ihrer Sitzung unterbrechen und erneut herstellen, können Sie den folgenden Code in einer SQL-Zelle ausführen, um zu überprüfen, ob die Datei noch angezeigt wird:

LS @permanent_stage;
Copy

Verwenden Sie Snowsight, um Dateien in ein Notebook hochzuladen

Sie können Dateien von Ihrem lokalen Computer hochladen, um sie in Ihrem Snowflake-Notebook zu verwenden.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Notebooks aus.

  3. Wählen Sie auf der Registerkarte Files neben dem Datenbank-Objekt-Explorer das Symbol Dashboard-Kachel hinzufügen aus, um Dateien zum Hochladen auszuwählen.

  4. Suchen Sie die Dateien, und wählen Sie sie aus, oder ziehen Sie sie per Drag & Drop in das Dialogfeld.

  5. Wählen Sie Upload aus, um Ihre Datei hochzuladen.

Bemerkung

Wenn Sie Dateien hochladen, um sie als Python-Pakete in Ihrem Notebook zu verwenden, bedenken Sie, dass nur die .py- und .zip-Dateien unterstützt werden, wenn sie auf Warehouse Runtime laufen. Für Container Runtime werden auch .whl (wheel)-Dateien unterstützt. Wenn Sie ein Paket als .zip-Datei importieren, vergewissern Sie sich, dass im Stammverzeichnis eine __init__.py-Datei vorhanden ist, um anzuzeigen, dass es sich um ein Python-Paket handelt.

Hochgeladene Dateien werden im internen Stagingbereich des Notebooks gespeichert und bleiben zwischen den Sitzungen erhalten. Sie können auf hochgeladene Dateien über ihre lokalen Pfade in der Notebook-Datei verweisen. Siehe Referenzieren von Dateien in Notebooks.

Bemerkung

Es werden nur interne Stagingbereiche unterstützt. Externe Stagingbereiche (z. B. Amazon S3, Google Cloud Storage oder Azure Blob Storage) werden nicht unterstützt.

Verwenden Sie andere Bearbeitungsumgebungen, um Dateien hoch- oder herunterzuladen

Zusätzlich zur Verwendung des Dateibrowsers in Snowsight können Sie auch mit Dateien im Stagingbereich von Notebooks arbeiten, indem Sie entweder eine lokale Snowpark Python-Sitzung oder SnowSQL verwenden.

Lokale Snowpark Python-Sitzung

Mit den Methoden session.file.put und session.file.get in Snowpark Python können Sie Dateien von Ihrem lokalen Computer in den Stagingbereich eines Notebooks hoch- und herunterladen. Dazu müssen Sie eine Snowpark-Sitzung von Ihrer lokalen Bearbeitungsumgebung aus starten (nicht von Snowsight aus). Beispiel:

# 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

Bemerkung

Diese Methode funktioniert nicht über die Website SnowSQL CLI. Sie müssen die Methode in einer Python-Umgebung mit einer aktiven Snowpark-Sitzung ausführen.

SnowSQL-Befehle

Sie können Dateien auch direkt aus dem Stagingbereich von Notebooks hoch- oder herunterladen, indem Sie die Befehle SnowSQL verwenden:

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

Bevor Sie diese Befehle ausführen, vergewissern Sie sich, dass Sie die entsprechende Datenbank, das Schema und das Warehouse in Ihrer SnowSQL-Sitzung eingestellt haben.

Synchronisieren mit Dateien von Git

Wenn Ihr Notebook mit Git verbunden ist, werden alle Dateien, die sich in demselben Git-Ordner wie Ihr Notebook befinden, auf der Registerkarte Files angezeigt.

Weitere Informationen zur Arbeit mit Dateien in Git finden Sie unter Synchronisierung von Notebooks mit einem Git-Repository.

Referenzieren von Dateien in Notebooks

Jede Datei in der Notebook-Umgebung hat einen Stagingbereich und einen lokalen Pfad. Sie können diese Pfade verwenden, um auf die Datei im Notebook zu verweisen.

Verweis auf einen lokalen Pfad mit Python

Im Allgemeinen verwenden Python-Bibliotheken den lokalen Pfad zu einer Datei als Referenz auf die Datei. Der folgende Code greift beispielsweise auf die Datei data.csv zu, die in dasselbe Verzeichnis hochgeladen wurde wie das Notebook, in dem dieser Code ausgeführt wird:

import pandas as pd
df = pd.read_csv("data.csv")
Copy

Referenzieren des Stagingbereichspfads mit SQL

Mit SQL verweist Snowflake auf Dateien auf Basis des Stagingbereichspfads. Der Stagingbereichspfad einer Datei in Ihrem Notebook basiert auf dem folgenden Format:

snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/<file_name>
Copy

Um den Stagingbereichspfad zu finden, der mit den Dateien im Stagingbereich Ihres Notebooks verbunden ist, verwenden Sie das Menü Copy path:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Notebooks aus.

  3. Wählen Sie auf der Registerkarte Files neben dem Datenbank-Objekt-Explorer das Symbol Weitere Optionen neben der Datei aus, für die Sie den Pfad abrufen möchten.

  4. Wählen Sie Copy path aus. Dies kopiert den Pfad der Datei in Ihre Zwischenablage.

Dann können Sie die folgende SQL-Anweisung verwenden, um Details zu der Stagingdatei aufzulisten:

LIST 'snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/data.csv'
Copy

Einschränkungen und Hinweise

  • Laden Sie erst die Dateien, bevor Sie Ihre Notebook-Sitzung starten. Wenn Sie Dateien laden, nachdem eine Sitzung begonnen hat, müssen Sie Ihre Sitzung neu starten, um auf die Dateien zugreifen zu können.

  • Keine Beschränkungen für Dateitypen zum Hochladen.

  • Die maximale Größe einer Datei beträgt 250 MB oder weniger.

  • Dateien, die in einen lokalen Pfad im Notebook geschrieben werden, werden auf der Registerkarte Files nicht angezeigt. Sie können die Datei jedoch weiterhin in Ihrem Notebook-Code verwenden.

    Wenn Sie beispielsweise eine Datei data.json erstellen, können Sie auf diese wie im folgenden Code gezeigt zugreifen, auch wenn sie auf der Files-UI nicht sichtbar ist:

    # 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
  • Das Öffnen einer anderen .ipynb-Datei, die nicht die Hauptdatei des Notebooks ist, wird nicht unterstützt.

Zusätzliche Ressourcen