Verwenden von Amazon S3-kompatiblem Speicher¶
Unter diesem Thema finden Sie die erforderlichen Informationen für den Zugriff von Snowflake aus auf Amazon S3-kompatiblen Speicher.
Eine Speicheranwendung oder ein Speichergerät ist Amazon S3-kompatibel, wenn es eine Anwendungsprogrammierschnittstelle (API) bietet, die mit dem Industriestandard Amazon Simple Storage Service (S3) REST API konform ist. Die Amazon S3 REST API ermöglicht CRUD-Operationen und administrative Aktionen für Speicher-Buckets und Speicherobjekte.
Mit Snowflake können Sie einen externen Stagingbereich verwenden, um eine Verbindung zu einer wachsenden Anzahl von S3-kompatiblen Speicherlösungen herzustellen, einschließlich lokalem Speicher und Geräten, die außerhalb der Public Cloud existieren. Der externe Stagingbereich speichert einen S3-kompatiblen API-Endpunkt, Bucketname und Bucketpfad sowie Anmeldeinformationen. Erteilen Sie Rollen Berechtigungen für diesen Stagingbereich, damit die Benutzer Daten von den Speicherorten laden und Daten in diese entladen können.
Sie können die Snowflake-Unterstützung für Amazon S3-kompatiblen Speicher nutzen, um folgende Aufgaben auszuführen:
Abfragen von Daten in einem externen Stagingbereich, ohne die Daten in Snowflake laden zu müssen. Weitere Informationen dazu finden Sie unter Erweitern von Data Lakes mit externen Tabellen.
Lesen und Verarbeiten von unstrukturierten Daten. Weitere Informationen dazu finden Sie unter Verarbeiten von unstrukturierten Daten.
Unterstützung von Cloudplattformen¶
Dieses Feature ist für Snowflake-Konten verfügbar, die auf einer der folgenden unterstützten Cloudplattformen gehostet werden:
Amazon Web Services
Google Cloud
Microsoft Azure
Anforderungen an S3-kompatiblen Speicher¶
Ein S3-kompatibler API-Endpunkt für Snowflake muss die folgenden Anforderungen erfüllen:
Hohe Konformität mit der S3-API und Fähigkeit zur Verarbeitung unserer öffentlichen Testsuite (in GitHub). Wenn sich der Endpunkt nicht wie S3 verhält, kann er nicht mit Snowflake verwendet werden.
Wird von Ihrem Speicheranbieter als auf Snowflake-S3-Kompatibilität getesteter und konformer Dienst unterstützt. Eine Liste von Anbietern, die zumindest einige ihrer Produkte getestet und als kompatibel mit Snowflake befunden haben, finden Sie unter Anbieterunterstützung für S3-kompatiblen Speicher.
Ermöglicht Zugriff über die öffentliche Cloud, in der Ihr Snowflake-Konto gehostet wird.
Hochverfügbar und leistungsfähig für Analysezwecke.
Konfiguriert zur Verwendung von Anforderungen wie im Stil eines virtuellen Hosts. Weitere Informationen dazu finden Sie in der Amazon S3-Dokumentation unter Virtuelles Hosting von Buckets.
Zur Verwendung von HTTPS-Kommunikation mit gültigem TLS-Zertifikat konfiguriert.
Zur Verwendung direkter Anmeldeinformationen konfiguriert.
Enthält keine Portnummer. Beispielsweise wird der Endpunkt „mystorage.com:3000“ nicht unterstützt.
Wichtig
Amazon S3-kompatible Endpunkte sind nicht automatisch für alle Konten aktiviert. Wenden Sie sich an Ihre Snowflake-Kundenbetreuer oder an den Snowflake-Support, um dieses Feature anzufordern. Überprüfen Sie erst die Endpunkte mit unserer öffentlichen Testsuite (in GitHub), bevor Sie die Anfrage senden.
Fügen Sie Ihrem Anfrage die folgenden Informationen bei:
Name des Snowflake-Kontos und der Cloudregion Ihrer Bereitstellung
Die Endpunkt-URL (d. h. „mein-s3-endpunkt.firma.de“).
Der Software- oder Hardwareanbieter, der den Endpunkt bereitstellt.
Erstellen eines externen Stagingbereichs für S3-kompatiblen Speicher¶
Um einen externen Stagingbereich für S3-kompatiblen Speicher zu erstellen, erstellen Sie mit dem Befehl CREATE STAGE einen benannten externen Stagingbereich. Ein benanntes Stagingbereichsobjekt kann neben anderen SQL-Aktionen zum Auflisten von Dateien, zum Laden von Daten und zum Entladen von Dateien verwendet werden.
Fügen Sie optional eine Verzeichnistabelle für den externen Stagingbereich hinzu. Sie können eine Verzeichnistabelle abfragen, um Datei-URLs abzurufen und so auf Dateien im referenzierten Speicher sowie auf andere Metadaten zuzugreifen.
Bemerkung
Wenn Sie eine Verzeichnistabelle hinzufügen, müssen Sie den Parameter AUTO_REFRESH auf FALSE setzen. Die Metadaten von S3-kompatiblen externen Stagingbereichen können nicht automatisch aktualisiert werden.
Im folgenden Beispiel wird ein externer Stagingbereich mit dem Namen my_s3_compat_stage
erstellt, der auf den Bucket und den Pfad namens my_bucket/files/
am Endpunkt mystorage.com
verweist: Die in diesem Beispiel verwendeten Werte AWS_KEY_ID und AWS_SECRET_KEY dienen nur zur Veranschaulichung.
CREATE STAGE my_s3compat_stage
URL = 's3compat://my_bucket/files/'
ENDPOINT = 'mystorage.com'
CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')
Laden und Entladen von Daten¶
Sie können Daten über einen externen Stagingbereich laden und entladen, der für S3-kompatiblen Speicher konfiguriert ist. Die folgenden Features funktionieren mit S3-kompatiblem Speicher:
Massenladen von Daten mit dem Befehl COPY INTO <Tabelle>.
Sie können beispielsweise Daten in die Tabelle
t1
aus allen Dateien laden, die sich im Unterpfadload
von Pfad/Bucket befinden, die in dem von Ihnen erstellten Stagingbereich namensmy_s3compat_stage
definiert sind:COPY INTO t1 FROM @my_s3compat_stage/load/;
Aufrufen von Snowpipe-REST-Endpunkten zum kontinuierlichen Laden von Daten.
Beispielprogramme finden Sie unter Option 1: Laden von Daten mit der Snowpipe-REST-API.
Entladen von Daten mit dem Befehl COPY INTO <Speicherort>.
Entladen Sie beispielsweise Daten aus Tabelle
t2
in Dateien im Unterpfadunload
von Pfad/Bucket, die in dem von Ihnen erstellten Stagingbereichmy_s3compat_stage
definiert sind:COPY INTO @my_s3compat_stage/unload/ FROM t2;
Erweitern von Data Lakes mit externen Tabellen¶
Sie können externe Tabellen mit S3-kompatiblem Speicher verwenden, um Daten abzufragen, ohne sie vorher in Snowflake laden zu müssen. In diesem Abschnitt erfahren Sie kurz, wie Sie eine externe Tabelle erstellen und abfragen, die auf einen Speicherort in einem externen Stagingbereich verweist, der für S3-kompatiblen Speicher konfiguriert ist.
Beginnen Sie, indem Sie mit CREATE EXTERNAL TABLE eine externe Tabelle erstellen, die auf einen S3-kompatiblen externen Stagingbereich verweist.
Bemerkung
Die Metadaten dieser externen Tabellen können nicht automatisch aktualisiert werden. Die Parametereinstellung AUTO_REFRESH = TRUE
wird nicht unterstützt. Sie müssen die Metadaten manuell aktualisieren, indem Sie den Befehl ALTER EXTERNAL TABLE … REFRESH ausführen, um alle hinzugefügten oder entfernten Dateien zu registrieren.
Im folgenden Beispiel wird eine externe Tabelle namens et
erstellt, die auf den Unterpfad path1
in einem Stagingbereich namens my_s3compat_stage
verweist. Die Dateien im Unterpfad path1
liegen im Apache Parquet-Format vor.
CREATE EXTERNAL TABLE et
LOCATION=@my_s3compat_stage/path1/
AUTO_REFRESH = FALSE
REFRESH_ON_CREATE = TRUE
FILE_FORMAT = (TYPE = PARQUET);
Nachdem Sie eine externe Tabelle für S3-kompatible Speicherung erstellt haben, können Sie diese abfragen. Fragen Sie beispielsweise die Spalte value
in der zuvor erstellten externen Tabelle ab:
SELECT value FROM et;
Die Abfrageleistung variiert je nach Netzwerk- und Anwendungs- bzw. Geräteleistung. Wenn die Verarbeitungsleistung entscheidend ist, empfehlen wir das Erstellen einer materialisierten Ansicht auf der externen Tabelle.
Anbieterunterstützung für S3-kompatiblen Speicher¶
Sie können Geräte oder Anwendungen, die eine S3-kompatible API haben, mit Snowflake verwenden. Ihr Anbieter von Speicherdienstleistungen ist jedoch für die Sicherstellung der Konformität verantwortlich.
Die folgenden Anbieter haben Snowflake mitgeteilt, dass sie zumindest einige ihrer Produkte getestet haben und dass diese mit Snowflake funktionieren:
Backblaze
Cloudflare
Cloudian
Cohesity
Dell
Hitachi Content Platform
IDrive e2
MinIO
NetApp (StorageGRID)
Nutanix
PureStorage
Scality
Wasabi
Diese Liste dient lediglich als Orientierung. Snowflake testet keine externen Produkte, um die Kompatibilität zu überprüfen, und kann keine Probleme in Produkten von Drittanbietern beheben. Wenn Sie Fragen dazu haben, ob oder wie Ihre Hardware oder Software mit einer S3-API mit Snowflake funktioniert, empfehlen wir Ihnen, sich direkt an den Hersteller zu wenden.
Testen Ihrer S3-kompatiblen API¶
Wenn Sie ein Hardware- oder Softwareentwickler sind, der eine S3-kompatible API erstellt hat, können Sie unsere öffentliche Testsuite (in GitHub) verwenden, um zu testen, ob Ihre S3-API mit Snowflake funktioniert. Die Testsuite sucht nach offensichtlichen Abweichungen zwischen Ihrer Implementierung und dem, was Snowflake von S3 erwartet. Allerdings kann es Fälle geben, in denen die Tests keine Inkompatibilität feststellen.
Wenn Sie als Kunde Ihre eigenen Geräte testen möchten, empfehlen wir Ihnen, sich an Ihren Anbieter zu wenden, um diese Tests auszuführen. Sie können diese öffentlichen Tests jedoch auch auf Ihren Geräten ausführen, um die Kompatibilität zu beurteilen.