Allgemeine Informationen zu Streamlit in Snowflake

Achtung

Dieses Feature ist für Konten in kommerziellen AWS- und Microsoft Azure-Regionen verfügbar. AWS PrivateLink und Azure Private Link werden nicht unterstützt.

Unter diesem Thema wird beschrieben, wie Sie mit Streamlit in Snowflake Streamlit-Anwendungen entwickeln und ausführen können.

Allgemeine Informationen zu Streamlit in Snowflake

Streamlit ist eine Open-Source-Python-Bibliothek, mit der sich auf einfache Weise kundenspezifische Web-Apps für maschinelles Lernen und Data Science erstellen und freigeben lassen. Mit Streamlit können Sie schnell leistungsstarke Datenanwendungen entwickeln und bereitstellen. Weitere Informationen zu dieser Open-Source-Bibliothek finden Sie in der Streamlit Library-Dokumentation.

Streamlit in Snowflake unterstützt Entwickler beim sicheren Erstellen, Bereitstellen und Freigeben von Streamlit-Apps in der Snowflake-Datencloud. Mit Streamlit in Snowflake können Sie Anwendungen erstellen, die Daten in Snowflake verarbeiten und nutzen, ohne Daten oder Anwendungscode in ein externes System verschieben zu müssen.

Voraussetzungen für die Verwendung von Streamlit in Snowflake

Um Streamlit in Snowflake verwenden zu können, müssen Sie die folgenden Voraussetzungen erfüllen:

Erforderliche Berechtigungen zum Erstellen und Verwenden einer Streamlit-App

Innerhalb von Streamlit in Snowflake ist eine Streamlit-App ein sicherungsfähiges Objekt, das dem Snowflake-Framework für die Zugriffssteuerung unterliegt. Streamlit-Apps verwenden ein Berechtigungsmodell, das auf Eigentümerrechten basiert. Weitere Informationen dazu finden Sie unter Erläuterungen zu Eigentümerrechten und Streamlit in Snowflake-Apps.

Ein App-Editor und der Eigentümer des Schemas, das die Streamlit-App enthält, können festlegen, welche Rollen zur Verwendung der App berechtigt sind. Benutzer können mit der App interagieren und alles sehen, was die Streamlit-App anzeigt. Benutzer haben die gleiche Sicht auf die App wie der Eigentümer.

Weitere Informationen dazu finden Sie unter Freigabe einer Streamlit-App.

Erforderliche Berechtigungen zum Erstellen einer Streamlit-App

Streamlit-Apps sind Objekte auf Schemaebene.

Um eine Streamlit-App mit Streamlit in Snowflake zu erstellen und zu bearbeiten, müssen Sie eine Rolle verwenden, die entweder die Berechtigung OWNERSHIP für das Schema oder die folgenden Berechtigungen haben:

  • Für die Datenbank, die die Streamlit-App enthält:

    • USAGE

  • Für das Schema, das die Streamlit-App enthält:

    • USAGE

    • CREATE STREAMLIT

    • CREATE STAGE

Verwenden Sie den Befehl GRANT <Berechtigungen>, um einer Rolle diese Berechtigungen zu erteilen, wie in den folgenden Beispielen gezeigt:

GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
Copy

Wenn eine zukünftige Berechtigungszuweisung für die Datenbank oder das Schema definiert ist, stellen Sie sicher, dass der Benutzer die Streamlit-App mit der in der zukünftigen Berechtigungszuweisung definierten Rolle erstellt wird.

Erforderliche Berechtigungen zum Anzeigen einer Streamlit-App

Um eine Streamlit-App anzuzeigen, müssen Sie ein Snowflake-Konto haben und angemeldet sein. Sie müssen außerdem eine Rolle verwenden, die die Berechtigung USAGE für folgende Objekte hat:

  • Die Datenbank, die die Streamlit-App enthält

  • Das Schema, das die Streamlit-App enthält

  • Die Streamlit-App

Wenn der App-Eigentümer eine Streamlit-App für eine andere Rolle freigibt, wird der neuen Rolle die USAGE-Berechtigung in den meisten Fällen automatisch zugewiesen. Wenn jedoch eine Streamlit-App in einem Schema mit MANAGED ACCESS erstellt wird, muss der neuen Rolle die USAGE-Berechtigung manuell zugewiesen werden.

Der Schemaeigentümer oder ein Benutzer mit der Rolle mit MANAGE GRANTS-Berechtigung für das Schema muss die USAGE-Berechtigung mit dem GRANT <Berechtigungen>-Befehl zuweisen, wie in den folgenden Beispielen gezeigt:

GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT streamlit_db.streamlit_schema.streamlit_app to ROLE streamlit_user;
Copy

Bemerkung

Zukünftige Berechtigungszuweisungen werden für STREAMLIT-Objekte nicht unterstützt.

Unterstützte Versionen der Streamlit-Bibliothek

Streamlit in Snowflake unterstützt v1.22.0 und v1.26.0 der Streamlit-Bibliothek. Die Unterstützung für neue Versionen der Streamlit-Bibliothek wird später hinzugefügt.

Versionshinweise zu den einzelnen Versionen finden Sie unter Änderungsprotokoll der Streamlit-Bibliothek. Beachten Sie, dass einige Features der Open-Source-Streamlit-Bibliothek in Streamlit in Snowflake nicht unterstützt werden. Siehe Nicht unterstützte Streamlit-Features.

Version der Streamlit-Bibliothek auswählen

Für jede Streamlit in Snowflake-App können Sie die Version der Streamlit-Bibliothek in Snowsight auswählen oder die Version in der Datei der App environment.yml festlegen. Wenn Sie die Version nicht festlegen, wird die letzte verfügbare Version verwendet.

Snowflake empfiehlt, eine Version von Streamlit anzuheften, um zu verhindern, dass die App aktualisiert wird, wenn eine neue Version von Streamlit im Snowflake-Anaconda-Kanal verfügbar wird.

Streamlit-Version in der Streamlit-App in Snowsight auswählen

So wählen Sie die in der Streamlit-App zu verwendende Version in Snowsight aus:

  1. Melden Sie sich bei Snowsight als Benutzer mit der Berechtigung CREATE STREAMLIT an.

  2. Wählen Sie im Navigationsmenü die Option Projects » Streamlit aus.

  3. Wählen Sie die Streamlit-App aus.

  4. Wählen Sie Edit aus.

  5. Wählen Sie oben im Streamlit-Editor die Option Packages aus.

  6. Wählen Sie die Streamlit-Version aus.

Streamlit-Version in der Datei environment.yml festlegen

Um die Streamlit-Version in der Datei environment.yml festzulegen, verwenden Sie das folgende Beispiel:

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
- streamlit=1.26
Copy

Unterstützte externe Pakete

Standardmäßig enthält Streamlit in Snowflake die Pakete python, streamlit und snowflake-snowpark-python, die in Ihrer Umgebung vorinstalliert sind. Die Umgebung hat auch Zugriff auf die von diesen Paketen benötigten Abhängigkeiten.

Streamlit in Snowflake-Apps werden in Python 3.8 ausgeführt.

Sie können zusätzliche Pakete in Ihrer Streamlit-App installieren. Eine Liste der unterstützten Pakete finden Sie im Snowflake-Anaconda-Kanal.

Informationen zum Einbinden eines unterstützten Pakets in Ihre Streamlit-App finden Sie unter folgenden Themen:

Hinweise zur Parallelität bei Streamlit in Snowflake

Streamlit in Snowflake bietet Sitzungsdrosselung und automatische Skalierung innerhalb von Snowflake, um Nachfrage-Peaks nach einer Streamlit-App zu bewältigen. Streamlit in Snowflake verwendet eine Kombination aus Clouddienstinstanzen und Instanzen virtueller Warehouses. Weitere Informationen dazu finden Sie unter Schlüsselkonzepte und Architektur.

Um die Integrität von Snowflake zu wahren, setzt Streamlit in Snowflake pro Instanz, pro Konto und pro Benutzer Limits für die Anzahl der gleichzeitigen Streamlit-Sitzungen, die eine Clouddienstinstanz verarbeiten kann. Der Workload der Streamlit-Sitzungen wird so zwischen diesen Instanzen aufgeteilt, bis alle Instanzen ihr Limit für gleichzeitige Sitzungen erreicht haben. Wenn ein Limit erreicht ist, wird die Instanz automatisch skaliert, um zusätzliche Sitzungen zu unterstützen.

Bemerkung

Anforderungen von Benutzern der Streamlit-App können vorübergehend gedrosselt werden. Benutzern wird bei Aktivierung der automatischen Skalierung möglicherweise eine „Please Wait“-Meldung angezeigt.

Hinweise zur Abrechnung für Streamlit in Snowflake

Streamlit in Snowflake benötigt ein virtuelles Warehouse, um eine Streamlit-Anwendung und SQL-Abfragen auszuführen. Um eine Streamlit-Anwendung auszuführen, müssen Sie ein einziges virtuelles Warehouse auswählen, um sowohl die Anwendung selbst als auch deren Abfragen auszuführen. Dieses Warehouse bleibt aktiv, solange die WebSocket-Verbindung der App aktiv ist. Die WebSocket-Verbindung, die dafür sorgt, dass das virtuelle Warehouse der Streamlit-App aktiv bleibt, wird etwa 15 Minuten nach der letztmaligen Nutzung der App deaktiviert.

Um Credits zu sparen, können Sie das virtuelle Warehouse anhalten. Alternativ können Sie die Webseite schließen, auf der die App ausgeführt wird, wodurch das aktive virtuelle Warehouse automatisch angehalten wird.

Richtlinien für die Auswahl eines Warehouses in Streamlit in Snowflake

Wenn Sie eine Streamlit-App in Streamlit in Snowflake ausführen, kann die Performance von mehreren Faktoren beeinflusst werden, darunter von der Komplexität der Streamlit-App, von der Verfügbarkeit von Warehouses, von der Latenz und von den Kosten. Die folgenden Abschnitte enthalten allgemeine Richtlinien für die Verwendung von virtuellen Warehouses in Streamlit in Snowflake.

Kleinere Warehouses nutzen

Wenn Sie eine Streamlit-App in Streamlit in Snowflake ausführen, sollten Sie das kleinstmögliche Warehouse auswählen.

Während der Ausführung verwaltet ein Warehouse einen Cache für die von einer Streamlit-App verwendeten Python-Pakete. Das Zwischenspeichern von Python-Paketen verbessert die Leistung beim späteren Laden der Apps, indem die zwischengespeicherte Version eines Pakets verwendet wird, anstatt die Pakete erneut herunterzuladen. Der Cache wird entfernt, wenn das Warehouse angehalten wird, was dazu führen kann, dass die App nach dem Fortsetzen des Warehouses zunächst langsamer geladen wird. Wenn das fortgesetzte Warehouse aktiv ist und mehr Apps ausführt, wird der Paket-Cache neu erstellt, und die Apps, die den Cache nutzen können, erfahren eine verbesserte Leistung beim Laden.

Beachten Sie, dass die sekundengenaue Credit-Abrechnung und das automatische Anhalten die erforderliche Flexibilität bereitstellen, um mit kleineren Warehouses zu beginnen und dann die Größe des Warehouses an den Workload der Streamlit-App anzupassen. Sie können die Größe eines Warehouse jederzeit verringern. Weitere Informationen dazu finden Sie unter Das Warehouse einer Streamlit-App ändern.

Dedizierte Warehouses verwenden

Wenn Sie Streamlit in Snowflake verwenden, empfiehlt Snowflake zum Ausführen der Streamlit-Apps die Verwendung eines dedizierten Warehouses. So können Sie die Kosten für das Ausführen einer Streamlit-App isolieren. Ein dediziertes Warehouse kann auch die Ladezeit der App verbessern, da das Warehouse keine anderen Workloads verwalten muss.

Weitere Informationen dazu finden Sie unter Hinweise zu Warehouses.

Tipp

Um während der Initialisierung das Anhalten des Warehouses zu vermeiden, müssen Sie das automatische Anhalten auf ein Minimum von 30 Sekunden einstellen.