Mit Dateien in Snowflake 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 erstellen, werden zwei Dateien erstellt. Diese werden im Bereich Files auf der linken Seite des Notebooks angezeigt. Die Dateien werden in einem internen Stagingbereich gespeichert, der Ihre Notebook-Umgebung darstellt. Die in diesem internen Stagingbereich gespeicherten Dateien bleiben zwischen den Sitzungen erhalten.
Hauptdatei des Notebooks: Diese heißt standardmäßig
notebook_app.ipynb
. Wenn Ihr Notebook über Git erstellt oder von einer anderen.ipynb
-Datei hochgeladen wurde, kann der Dateiname anders lauten.„environment.yml“: Dies ist eine automatisch generierte Datei, die Ihre Notebook-Umgebung beschreibt, z. B. welche Pakete installiert sind.
Um den Inhalt der Datei zu prüfen, können Sie den Dateinamen auswählen, sodass ein Popup-Fenster mit einer Vorschau des Dateiinhalts angezeigt wird. Beachten Sie, dass Dateien schreibgeschützt sind. Um den Inhalt einer Datei zu ändern, müssen Sie sie herunterladen, lokal bearbeiten und dann die aktualisierte Kopie hochladen.
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. Die Dateien im temporären Stagingbereich sind nicht mehr verfügbar, wenn Sie die aktuelle Notebook-Sitzung verlassen.
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()
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()
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 erhalten bleiben und auf die Dateien in verschiedenen Notebooks verweisen, speichern Sie die Dateien in einem Snowflake-Stagingbereich. Sie können Dateien von Ihrem lokalen Rechner in den Stagingbereich hochladen und mit den Dateioperationen der 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;
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()
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
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 sehen, ob die Datei noch vorhanden ist:
LS @permanent_stage;
Dateien vom lokalen Computer zu Notebook hinzufügen¶
Sie können Dateien von Ihrem lokalen Computer hochladen, um sie in Ihrem Snowflake-Notebook zu verwenden.
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Notebooks aus.
Wählen Sie auf der Registerkarte Files neben dem Datenbank-Objekt-Explorer das Symbol
aus, um Dateien zum Hochladen auszuwählen.
Suchen Sie die Dateien, und wählen Sie sie aus, oder ziehen Sie sie per Drag & Drop in das Dialogfeld.
Wählen Sie Upload aus, um Ihre Datei hochzuladen.
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.
Warnung
Wenn Ihre Notebook-Sitzung aktiv war, als Sie die Datei hochgeladen haben, müssen Sie Ihre Notebook-Sitzung neu starten, damit die hochgeladene Datei zugänglich ist. Dies ist ein bekannter Bug. Snowflake empfiehlt, alle Dateien, die Sie für die Verwendung in Ihrem Notebook benötigen, vor Beginn Ihrer Sitzung hinzuzufügen.
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 Snowflake Notebooks mit Git-Repository synchronisieren.
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.
Referenzieren eines lokalen Pfads mit Python¶
Im Allgemeinen verwenden die Python-Bibliotheken den lokalen Pfad zur 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")
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>
Um den Stagingbereichspfad zu finden, der mit den Dateien im Stagingbereich Ihres Notebooks verbunden ist, verwenden Sie das Menü Copy path:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Notebooks aus.
Wählen Sie auf der Registerkarte Files neben dem Datenbank-Objekt-Explorer das Symbol
neben der Datei aus, für die Sie den Pfad abrufen möchten.
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'
Anforderungen an die Zugriffssteuerung¶
Sie müssen eine Rolle mit den folgenden Berechtigungen verwenden, um auf Dateien aus einem Stagingbereich in einem Notebook zuzugreifen.
Berechtigung |
Objekt |
---|---|
USAGE |
Stagingbereich, der die Dateien enthält. |
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 nicht auf der Files-UI angezeigt. Dies ist ein bekannter Bug. Sie sollten aber trotzdem in der Lage sein, die Datei in Ihrem Notebook-Code zu 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},{"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
Das Öffnen einer anderen
.ipynb
-Datei, die nicht die Hauptdatei des Notebooks ist, wird nicht unterstützt.
Zusätzliche Ressourcen¶
Weitere Beispiele finden Sie in den folgenden Beispiel-Notebooks auf Github: