Snowflake Notebooks einrichten

Snowflake Notebooks sind First-Class-Objekte, die in einem Schema unter einer Datenbank gespeichert sind. Sie können auf zwei Compute-Architekturen laufen: Warehouses und Container. In diesem Thema erfahren Sie, wie Sie Ihr Konto als Administrator einrichten und Snowflake Notebooks nutzen können.

Administrator-Einrichtung

Um Ihre Organisation mit Snowflake Notebooks einzurichten, führen Sie die folgenden Schritte aus:

Überprüfen Sie die Anforderungen für Konten und Bereitstellung

Vergewissern Sie sich, dass *.snowflake.app in Ihrem Netzwerk auf der Zulassungsliste steht, einschließlich der Inhaltsfiltersysteme, und eine Verbindung zu Snowflake herstellen kann. Wenn diese Domäne in der Zulassungsliste enthalten ist, können Ihre Apps ohne Einschränkungen mit Snowflake-Servern kommunizieren.

Um Probleme bei der Verbindung mit dem Snowflake Backend zu vermeiden, stellen Sie außerdem sicher, dass WebSockets in Ihrer Netzwerkkonfiguration nicht blockiert werden.

Anaconda-Bedingungen für den Import von Bibliotheken akzeptieren

Bevor Sie die von Anaconda in Snowflake bereitgestellten Pakete verwenden können, müssen Sie die Bedingungen für externe Angebote anerkennen.

Bemerkung

Sie müssen die ORGADMIN-Rolle verwenden, um die Bedingungen zu akzeptieren. Sie müssen die Bedingungen für externe Angebote nur einmal für Ihr Snowflake-Konto akzeptieren. Wenn Sie nicht über die ORGADMIN-Rolle verfügen, siehe Aktivieren der ORGADMIN-Rolle für ein Konto.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Admin » Billing & Terms aus.

  3. Wählen Sie im Abschnitt Anaconda die Option Enable aus.

  4. Klicken Sie im Anaconda Packages-Dialog auf den Link, um die Bedingungen für externe Angebote zu prüfen.

  5. Wenn Sie mit den Bedingungen einverstanden sind, klicken Sie auf Acknowledge & Continue.

Wenn Sie beim Versuch, die Bedingungen für externe Angebote zu akzeptieren, auf eine Fehlermeldung stoßen, kann dies daran liegen, dass in Ihrem Benutzerprofil Informationen fehlen, wie z. B. ein Vorname, ein Nachname oder eine E-Mail-Adresse.

Ressourcen erstellen und Berechtigungen erteilen

Um ein Notebook zu erstellen, benötigt eine Rolle Berechtigungen für die folgenden Ressourcen:

  • CREATE NOTEBOOK-Berechtigung für einen Speicherort

  • USAGE-Berechtigung für Computeressourcen

  • (Optional) USAGE-Berechtigung für externe Zugriffsintegrationen (EAIs)

Unter Vorlage für die Einrichtung von Notebooks finden Sie Beispielskripte zum Erstellen und Erteilen von Berechtigungen für diese Ressourcen.

Location

Der Speicherort ist der Ort, an dem ein Notebookobjekt gespeichert wird. Der Benutzer kann jede Datenbank und jedes Schema abfragen, auf die seine Rolle Zugriff hat.

  • Um den Kontext auf eine andere Datenbank oder ein anderes Schema zu ändern, verwenden Sie die Befehle USE DATABASE oder USE SCHEMA in einer SQL-Zelle.

In der Laufzeit des Containers benötigt die Rolle, die das Notizbuch erstellt, auch die CREATE SERVICE-Berechtigung für das Schema.

Berechtigung

Objekt

USAGE

Datenbank

USAGE

Schema

CREATE NOTEBOOK

Schema

CREATE SERVICE

Schema

Rollen, die Eigentümer eines Schemas sind, haben automatisch die Berechtigung, Notebooks innerhalb dieses Schemas zu erstellen, denn Eigentümer können jede Art von Objekt erstellen, auch Notebooks.

Berechtigung

Objekt

USAGE

Datenbank

OWNERSHIP

Schema

Computeressourcen

In der Warehouse-Laufzeit werden sowohl die Notebook-Engine als auch die Python-Prozesse des im Notebook erstellten Codes auf dem Notebook Warehouse ausgeführt, während die SQL-Abfragen und die Snowpark-Pushdown-Abfragen auf dem Query Warehouse ausgeführt werden. Die Eigentümerrolle des Notebooks erfordert die USAGE-Berechtigung für beide Warehouses.

Wenn ein Notebook zur Laufzeit in einem Container läuft, benötigt die Rolle die USAGE-Berechtigung auf einem Computepool anstelle des Notebook Warehouse. Computepools sind CPU-basierte oder GPU-basierte virtuelle Maschinen, die von Snowflake verwaltet werden. Wenn Sie einen Computepool erstellen, setzen Sie den Parameter MAX_NODES auf einen Wert größer als eins, da für jedes Notebook ein vollständiger Knoten benötigt wird. Weitere Informationen dazu finden Sie unter Snowpark Container Services: Verwenden von Computepools.

Berechtigung

Objekt

USAGE

Notebook Warehouse oder Computepool

USAGE

Warehouse-Abfrage

Externe Zugriffsintegrationen (optional)

Wenn Sie bestimmten Rollen den Zugriff auf ein externes Netzwerk erlauben, verwenden Sie die Rolle ACCOUNTADMIN, um die USAGE-Berechtigung für externe Zugriffsintegrationen (EAIs) einzurichten und zu gewähren. Erlauben Sie EAIs den Zugriff auf bestimmte externe Endpunkte, damit Ihre Teams Daten und Modelle herunterladen, API-Anfragen und -Antworten senden, sich bei anderen Diensten anmelden können usw. Bei Notebooks, die auf einer Container-Laufzeit laufen, ermöglichen EAIs Ihren Teams auch die Installation von Paketen aus Repositories wie PyPi und Hugging Face.

Weitere Informationen zum Einrichten von EAI für Ihr Notebook finden Sie unter Einrichten des externen Zugriffs für Snowflake Notebooks.

Berechtigung

Objekt

USAGE

Integration für externen Zugriff

Vorlage für die Einrichtung von Notebooks

Da es sich bei Notebooks um Objekte mit rollenbasierten Erstellungs- und Eigentumsberechtigungen handelt, können Sie den Zugriff auf das Notebook-Feature so konfigurieren, dass er den Anforderungen Ihres Unternehmens und Ihres Teams entspricht. Hier sind ein paar Beispiele:

Erlauben Sie allen, Notebooks an einem bestimmten Speicherort zu erstellen

Die folgenden Schritte beschreiben, wie Sie den Zugriff für die Erstellung von Notebooks an einem bestimmten Speicherort konfigurieren, indem Sie die Nutzung einer Datenbank und eines Schemas erlauben. Alternativ können Sie auch private Notebooks aktivieren, für die diese Zugriffsrechte nicht erforderlich sind. Weitere Informationen über private Notebooks finden Sie unter Private Notebooks.

Ersetzen Sie <database> und <database.schema> durch die spezifische Datenbank und das Schema, in dem Sie Ihre Notebooks erstellen möchten:

----------------------------------
--       Location Setup         --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;

-- For Notebooks on Container runtime, run the following:
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;

----------------------------------
--    Compute Resource Setup    --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;

-- For Notebooks on Container runtime:
CREATE COMPUTE POOL CPU_XS
  MIN_NODES = 1
  MAX_NODES = 15
  INSTANCE_FAMILY = CPU_X64_XS;

CREATE COMPUTE POOL GPU_S
  MIN_NODES = 1
  MAX_NODES = 5
  INSTANCE_FAMILY = GPU_NV_S;

GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE PUBLIC;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE PUBLIC;

-------------------------------------
-- Optional: External Access --
-------------------------------------

-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;

GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
Copy

Erstellen Sie eine dedizierte Rolle

Wenn Sie möchten, dass nur bestimmte Benutzer Notebooks erstellen können (vorausgesetzt, sie haben noch keine OWN Schemata), können Sie eine spezielle Rolle zur Zugriffskontrolle erstellen. Beispiel:

CREATE ROLE notebooks_rl;
Copy

Gewähren Sie bestimmten Benutzern die ROLE notebook_rl. Verwenden Sie dann das obige Skript, um Ressourcen zu erstellen und dieser Rolle Berechtigungen zu erteilen (ersetzen Sie ROLE PUBLIC durch ROLE notebook_rl).

Notebook-Engine

Die Notebook-Engine („Kernel“) und die Python-Prozesse laufen auf dem Notebook Warehouse. Snowflake empfiehlt, dass Sie mit einem X-Small Warehouse beginnen, um den Credit-Verbrauch zu minimieren.

Während Sie das Notebook verwenden (z. B. Code bearbeiten, Zellen ausführen, neu anordnen oder löschen) oder wenn das Notebook innerhalb seiner Leerlauf-Timeout-Einstellung aktiv bleibt, wird eine EXECUTE NOTEBOOK-Abfrage kontinuierlich ausgeführt, um anzuzeigen, dass die Notebook-Engine aktiv ist und eine Notebook-Sitzung verwendet wird. Sie können den Status dieser Abfrage unter Query history überprüfen. Während EXECUTE NOTEBOOK läuft, wird auch das Notebook Warehouse ausgeführt. Wenn EXECUTE NOTEBOOK beendet ist und keine anderen Abfragen oder Aufträge auf dem Warehouse laufen, wird es gemäß seiner Auto-Suspend-Richtlinie heruntergefahren.

Um die EXECUTE NOTEBOOK-Abfrage zu beenden (die Notebook-Sitzung zu beenden), gehen Sie wie folgt vor:

  1. Wählen Sie Active oder wählen Sie End session aus dem Dropdown-Menü Active.

  2. Suchen Sie in Query history die entsprechende Abfrage EXECUTE NOTEBOOK, und wählen Sie Cancel query.

  3. Lassen Sie das Notebook aufgrund von Inaktivität entsprechend der eingestellten Leerlaufzeit auslaufen. Wenn die Parameter STATEMENT_TIMEOUT_IN_SECONDS und STATEMENT_QUEUED_TIMEOUT_IN_SECONDS auf dem Notebook Warehouse auf einen kleinen Wert eingestellt sind, könnte das Notebook unabhängig von der Aktivität des Benutzers schnell herunterfahren oder nicht starten.

Abfragen

SQL- und Snowpark-Abfragen (z. B. session.sql) werden an das Abfrage-Warehouse weitergeleitet, das bei Bedarf verwendet wird. Wenn die SQL- und Snowpark-Abfragen beendet sind, wird das Abfrage-Warehouse angehalten, wenn keine anderen Aufträge außerhalb des Notebooks darauf laufen. Wählen Sie eine Warehouse-Größe, die Ihren Anforderungen an Abfrageleistung am besten entspricht. Vielleicht möchten Sie zum Beispiel große SQL-Abfragen durchführen oder rechenintensive Operationen mit Snowpark Python ausführen, die ein größeres Warehouse erfordern. Für Operationen, die einen hohen Speicherbedarf erfordern, sollten Sie ein Snowpark-optimiertes Warehouse verwenden.

Sie können das Abfrage-Warehouse in Notebook Settings ändern. Alternativ können Sie den folgenden Befehl in einer beliebigen SQL-Zelle des Notebooks ausführen, um das Abfrage-Warehouse für alle nachfolgenden Abfragen in der aktuellen Notebooksitzung zu ändern:

USE WAREHOUSE <warehouse_name>;
Copy
Notebook-Compute-Dagramm

Leerlaufzeit und Wiederherstellung der Verbindung

Jedes Notebook hat eine Leerlaufzeit-Eigenschaft namens IDLE_AUTO_SHUTDOWN_TIME_SECONDS mit einem Standardwert von 30 Minuten. Sie können die Leerlaufzeit für jedes Notebook unter Snowsight konfigurieren.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Projects » Notebooks aus.

  3. Wählen Sie das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt, um eine neue Zeit zu konfigurieren.

  4. Wählen Sie Notebook settings aus.

  5. Starten Sie die Sitzung manuell neu, damit die neue Leerlaufzeit wirksam wird.

Leerlaufzeit sammelt sich immer dann an, wenn keine Aktivität des Benutzers stattfindet, wie z. B. das Bearbeiten von Code, das Ausführen von Zellen, das Neuordnen oder Löschen von Zellen. Jedes Mal, wenn Sie die Aktivität wieder aufnehmen, wird die Leerlaufzeit zurückgesetzt. Sobald die Leerlaufzeit die Timeout-Einstellung erreicht, wird die Notebook-Sitzung automatisch beendet.

Vor dem Leerlauf-Timeout bleibt Ihre Notebook-Sitzung aktiv, bis der Leerlauf-Timeout erreicht ist, auch wenn Sie die Seite aktualisieren, andere Bereiche von Snowsight, Ihren Computer herunterfahren oder in den Ruhezustand versetzen. Wenn Sie dasselbe Notebook erneut öffnen, verbinden Sie sich wieder mit derselben Sitzung, wobei alle Sitzungszustände und Variablen erhalten bleiben, sodass Sie nahtlos weiterarbeiten können. Beachten Sie jedoch, dass der Status Ihrer Streamlit-Widgets nicht beibehalten wird.

Jeder einzelne Benutzer, der mit demselben Notebook arbeitet, hat seine eigene unabhängige Sitzung. Sie beeinträchtigen sich nicht gegenseitig.

Empfehlungen zur Kostenoptimierung

Als Kontoadministrator sollten Sie die folgenden Empfehlungen berücksichtigen, um die Kosten für den Betrieb von Notebooks zu kontrollieren:

  • Bitten Sie Ihre Teams, dasselbe Warehouse (X-Small wird empfohlen) als spezielles „Notebook-Warehouse“ für die Ausführung der Notebook-Sitzungen zu verwenden, um die Parallelität zu erhöhen. Beachten Sie, dass dies zu langsameren Sitzungsstarts (in der Warteschlange des Warehouse) oder Out-of-Memory-Fehlern führen kann, wenn zu viele Notebooks gleichzeitig ausgeführt werden sollen.

  • Erlauben Sie Ihren Teams, ein Warehouse mit einem niedrigeren STATEMENT_TIMEOUT_IN_SECONDS-Wert zu verwenden, um Notebooks zu betreiben. Dieser Warehouse-Parameter steuert, wie lange Abfragen dauern können, einschließlich Notebook-Sitzungen. Wenn der Parameter beispielsweise auf 10 Minuten eingestellt ist, kann die Notebook-Sitzung maximal 10 Minuten lang laufen, unabhängig davon, ob der Benutzer während dieser Zeit in der Notebook-Sitzung aktiv ist.

  • Bitten Sie Ihre Teams, ihre Notebook-Sitzungen zu beenden, wenn sie nicht vorhaben, aktiv an der Sitzung mitzuarbeiten.

  • Bitten Sie Ihre Teams, die Leerlauf-Timeout-Einstellung zu minimieren (z. B. auf 15 Minuten), wenn die Sitzung nicht über einen längeren Zeitraum laufen muss.

  • Alternativ können Sie auch ein Support-Ticket erstellen, um einen Standardwert für die Leerlaufzeit festzulegen, der für Ihr gesamtes Konto gilt. Dieser Wert kann auf Notebook-Ebene vom Eigentümer des Notebooks noch überschrieben werden.

Voraussetzungen für die Verwendung privater Notebooks

Unter Snowsight können Sie ein privates, benutzereigenes Notebook erstellen. Bevor Sie private Notebooks erstellen und verwenden können, muss ein Administrator mit der Rolle ACCOUNTADMIN die folgenden Aufgaben erledigen:

  1. Aktivieren Sie das Feature „persönlichen Datenbank“ entweder auf der Kontoebene oder für bestimmte Benutzer. Persönliche Datenbanken sind Snowflake-Objekte, die es ermöglichen, dass sich Notebooks wie private Notebooks verhalten. Informationen zur Durchführung dieser Aufgabe finden Sie in den folgenden Abschnitten:

  2. Legen Sie ggf. sekundäre Rollen für Benutzer fest, die private Notebooks erstellen werden. Informationen zum Abschluss dieser Aufgabe, die von der Aktivierung der neuesten BCR-Bundles abhängen kann, finden Sie unter Aktivieren aller sekundären Rollen für private Benutzer von Notebooks.

Wichtig

Nachdem der Administrator die persönlichen Datenbanken aktiviert hat, müssen sich die betroffenen Benutzer ab- und wieder anmelden, um die neue Verhaltensweise der Benutzer-Weboberfläche zu sehen.

Einzelheiten zu privaten Notebooks finden Sie unter Private Notebooks.

Aktivieren und Deaktivieren privater Notebooks für das Konto

Um private Notebooks auf einem Snowflake-Konto zu aktivieren, verwenden Sie einen ALTER ACCOUNT Befehl, der den Parameter ENABLE_PERSONAL_DATABASE auf TRUE setzt. Beispiel:

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

Sie können kein anderes Konto ändern; Sie können nur das aktuelle Konto ändern. Weitere Informationen zu diesem Befehl finden Sie unter ALTER ACCOUNT.

Wenn Sie private Notebooks für das Konto deaktivieren möchten, führen Sie denselben Befehl aus, setzen den Parameter jedoch auf FALSE. Beispiel:

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

Um den aktuellen Wert des Parameters ENABLE_PERSONAL_DATABASE zu überprüfen, führen Sie den folgenden Befehl SHOW PARAMETERS aus:

SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
Copy

Nachdem der Administrator den Parameter für das Konto aktiviert hat, muss sich ein Benutzer ab- und wieder anmelden. Anschließend kann der Benutzer überprüfen, ob die persönliche Datenbank erstellt wurde, indem er den Befehl USE DATABASE ausführt:

USE DATABASE USER$;
Copy

Sie können den aktuellen Benutzer explizit benennen, indem Sie das Präfix USER$ gefolgt von dem Anmeldenamen angeben. Beispiel:

USE DATABASE USER$bobr;
Copy

Diese Befehle sind erfolgreich, wenn die persönliche Datenbank für den aktuellen Benutzer existiert. Der Befehl USE DATABASE gibt einen Fehler zurück, wenn die persönliche Datenbank nicht existiert (weil die vorausgesetzten Aufgaben nicht abgeschlossen wurden) oder wenn es sich nicht um die persönliche Datenbank des aktuellen Benutzers handelt. Wenn zum Beispiel jlap nicht der aktuelle Benutzer ist, erscheint die folgende Meldung:

USE DATABASE USER$jlap;
Copy
ERROR: Insufficient privileges to operate on database 'USER$JLAP'

Bemerkung

  • Persönliche Datenbanken haben keinen bestimmten Eigentümer; sie sind systemeigene Objekte.

  • Sie können selbst keine persönlichen Datenbanken erstellen:

    • Sie werden im Lazy-Modus im Hintergrund für bestehende Benutzer erstellt, wenn das Konto für private Notebooks aktiviert ist. Wenn ein Benutzer zum ersten Mal einen Befehl mit expliziter USER$-Namensauflösung ausführt, wird die persönliche Datenbank erstellt. Wenn Sie z. B. den Befehl USE DATABASE USER$ ausführen, wird die persönliche Datenbank für den aktuellen Benutzer im Lazy-Modus erstellt.

Aktivieren und Deaktivieren privater Notebooks für einzelne Benutzer

Administratoren möchten vielleicht, dass bestimmte Benutzer des Kontos persönlichen Datenbankzugriff haben und nicht alle Benutzer des Kontos. Um den Zugriff für bestimmte Benutzer zu ermöglichen, verwenden Sie den Befehl ALTER USER, um den Parameter ENABLE_PERSONAL_DATABASE für diese Benutzer auf TRUE zu setzen. Aktivieren Sie zum Beispiel den Zugriff für drei Benutzer:

ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

Wenn Sie persönliche Datenbanken auf der Ebene des Kontos aktivieren, können Sie bei Bedarf persönliche Datenbanken für einzelne Benutzer deaktivieren. Um Benutzer zu deaktivieren, führen Sie denselben Befehl aus, setzen aber den Parameter auf FALSE. Beispiel:

ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

Wenn der Benutzer jlap das Präfix USER$ in einem Befehl angibt, schlägt der Befehl fehl, weil die persönliche Datenbank nicht existiert.

NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.

Bemerkung

Wenn Sie persönliche Datenbanken für einen bestimmten Benutzer aktivieren und dann deaktivieren, verliert der Benutzer den Zugriff auf die erstellte persönliche Datenbank, aber die Datenbank bleibt bestehen.

Notebook-Verwendung mit Hinzufügen von Daten beginnen

Bevor Sie mit Snowflake Notebooks beginnen, fügen Sie Daten zu Snowflake hinzu.

Sie können Daten auf verschiedene Weise zu Snowflake hinzufügen:

Sie können Daten auch auf andere Weise hinzufügen. Weitere Informationen dazu finden Sie unter Übersicht zum Laden von Daten.