Allgemeine Informationen zu Streamlit in Snowflake

Achtung

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

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

Allgemeine Informationen zu Streamlit in Snowflake

Streamlit ist eine Open-Source-Python-Bibliothek, mit der sich kundenspezifische Webanwendungen für maschinelles Lernen und Data Science leicht erstellen und freigeben lassen. Mit Streamlit können Sie schnell leistungsstarke Datenanwendungen erstellen und einsetzen. Weitere Informationen zu der 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 zu verwenden, 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 die App verwenden dürfen. Benutzer können mit der App interagieren und alles sehen, was die Streamlit-App anzeigt. Benutzer haben die gleiche Ansicht der 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 mithilfe von Streamlit in Snowflake zu erstellen und zu bearbeiten, müssen Sie eine Rolle verwenden, die über die folgenden Berechtigungen für das Schema und die Datenbank verfügt, die die Streamlit-App enthalten:

  • 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 mydb.myschema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE mydb TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
Copy

Erforderliche Berechtigungen zum Anzeigen einer Streamlit-App

Um eine Streamlit-App anzuzeigen, müssen Sie ein Snowflake-Konto haben und angemeldet sein. Außerdem muss Ihrem Konto eine Rolle mit der Berechtigung USAGE für Folgendes zugewiesen werden:

  • 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 die USAGE-Berechtigung in den meisten Fällen der neuen Rolle 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 eine 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 mydb.streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA mydb.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT mydb.streamlit_app to ROLE streamlit_user;
Copy

Bemerkung

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

Unterstützte Versionen der Streamlit-Bibliotheken

Streamlit in Snowflake unterstützt v1.22.0 der Streamlit-Bibliotheken. Unterstützung für spätere Versionen der Streamlit-Bibliotheken wird nach und nach hinzugefügt.

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.

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

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

Hinweise zur Parallelität bei Streamlit in Snowflake

Streamlit in Snowflake bietet Sitzungsdrosselung und automatische Skalierung innerhalb von Snowflake, um Zeiten erhöhter Nachfrage 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 Grenzen für die Anzahl der gleichzeitigen Streamlit-Sitzungen, die eine Clouddienstinstanz verarbeiten kann. Die Last der Streamlit-Sitzungen wird zwischen diesen Instanzen ausgeglichen, bis alle Instanzen ihr Limit für gleichzeitige Sitzungen erreicht haben. Wenn eine Grenze 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. Wenn die automatische Skalierung gestartet wird, wird möglicherweise die Meldung „Bitte warten“ angezeigt.

Hinweise zur Abrechnung für Streamlit in Snowflake

Streamlit in Snowflake benötigt ein virtuelles Warehouse, um eine Streamlit-Anwendung auszuführen und SQL-Abfragen durchzufü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 letzten 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 Anwendung 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, können sich mehrere Faktoren auf die Leistung auswirken, darunter die Komplexität der Streamlit-App, die Verfügbarkeit von Warehouses, die Latenz und die 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 der von einer Streamlit-App verwendeten Python-Pakete. Das Zwischenspeichern von Python-Paketen verbessert die Leistung beim späteren Laden von 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 läuft und mehr Apps ausführt, wird der Paket-Cache neu aufgebaut, und die Apps, die den Cache nutzen können, erfahren eine verbesserte Leistung beim Laden.

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

Verwenden von dedizierten Warehouses

Wenn Sie Streamlit in Snowflake verwenden, empfiehlt Snowflake die Verwendung eines dedizierten Warehouses für die Ausführung von Streamlit-Apps. 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.