Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Snowflake-Verbindungen
In AWS Glue 4.0 und späteren Versionen können Sie Glue for Spark verwenden, um aus Tabellen in Snowflake zu lesen und in AWS Tabellen zu schreiben. Sie können aus Snowflake mit einer SQL-Abfrage lesen. Sie können mit einem Benutzer und einem Passwort eine Verbindung zu Snowflake herstellen. Sie können auf Snowflake-Anmeldeinformationen verweisen, die im AWS Secrets Manager AWS Glue-Datenkatalog gespeichert sind. Data Catalog Snowflake-Anmeldeinformationen für AWS Glue for Spark werden getrennt von Data Catalog Snowflake-Anmeldeinformationen für Crawler gespeichert. Sie müssen einen SNOWFLAKE
-Verbindungstyp auswählen und keinen JDBC
-Verbindungstyp, der für die Verbindung mit Snowflake konfiguriert ist.
Weitere Informationen zu Snowflake finden Sie auf der Snowflake-Website
Konfiguration von Snowflake-Verbindungen
Es gibt keine AWS Voraussetzungen für die Verbindung zu Snowflake-Datenbanken, die über das Internet verfügbar sind.
Optional können Sie die folgende Konfiguration durchführen, um Ihre Verbindungsdaten mit AWS Glue zu verwalten.
Um Ihre Verbindungsdaten mit AWS Glue zu verwalten
Generieren Sie in Snowflake einen Benutzer
snowflakeUser
und ein Passwort.snowflakePassword
Erstellen Sie in AWS Secrets Manager ein Geheimnis mit Ihren Snowflake-Anmeldeinformationen. Um ein Geheimnis in Secrets Manager zu erstellen, folgen Sie dem Tutorial, das in der AWS Secrets Manager Dokumentation unter Create an AWS Secrets Manager Secret verfügbar ist. Nachdem Sie das Geheimnis erstellt haben, behalten Sie den Geheimnamen
secretName
für den nächsten Schritt bei.-
Wenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für
snowflakeUser
mit dem Schlüssel.USERNAME
-
Wenn Sie Schlüssel/Wert-Paare auswählen, erstellen Sie ein Paar für
snowflakePassword
mit dem Schlüssel.PASSWORD
-
Bei der Auswahl von Schlüssel/Wert-Paaren können Sie Ihrem Snowflake-Warehouse den Schlüssel
sfWarehouse
bereitstellen.
-
Erstellen AWS Sie im Glue-Datenkatalog eine Verbindung, indem Sie Verbindungen und dann Verbindung erstellen wählen. Folgen Sie den Schritten im Verbindungsassistenten, um den Vorgang abzuschließen:
Wählen Sie bei der Auswahl einer Datenquelle Snowflake und dann Weiter aus.
Geben Sie die Verbindungsdetails wie Host und Port ein. Geben Sie bei der Eingabe der Snowflake-Host-Snowflake-URL die URL Ihrer Snowflake-Instanz an. Die URL verwendet normalerweise einen Hostnamen in der Form.
Das URL-Format kann jedoch je nach Ihrem Snowflake-Kontotyp variieren (z. B. Azure oder von Snowflake gehostet). AWSaccount_identifier
.snowflakecomputing.com-
Wählen Sie bei der Auswahl der IAM-Dienstrolle aus dem Drop-down-Menü aus. Dies ist die IAM-Rolle aus Ihrem Konto, die für den Zugriff auf AWS Secrets Manager und die Zuweisung von IP-Adressen verwendet wird, wenn VPC angegeben ist.
Geben Sie bei der Auswahl eines AWS Geheimnisses Folgendes an.
secretName
Legen Sie im nächsten Schritt des Assistenten die Eigenschaften für Ihre Snowflake-Verbindung fest.
Überprüfen Sie im letzten Schritt des Assistenten Ihre Einstellungen und schließen Sie dann den Vorgang ab, um Ihre Verbindung herzustellen.
In den folgenden Situationen benötigen Sie möglicherweise Folgendes:
-
Für Snowflake, gehostet auf einer AWS Amazon VPC
-
Sie benötigen eine entsprechende Amazon-VPC-Konfiguration für Snowflake. Weitere Informationen zur Konfiguration Ihrer Amazon VPC finden Sie unter AWS PrivateLink & Snowflake
in der Snowflake-Dokumentation. -
Sie benötigen eine entsprechende Amazon VPC-Konfiguration für AWS Glue. Konfiguration von Schnittstellen-VPC-Endpunkten ()AWS PrivateLink für AWS Glue (AWS PrivateLink).
-
Sie müssen eine AWS Glue Data Catalog-Verbindung erstellen, die Amazon VPC-Verbindungsinformationen bereitstellt (zusätzlich zur ID eines AWS Secrets Manager Secrets, das Ihre Snowflake-Sicherheitsanmeldedaten definiert). Ihre URL ändert sich bei der Verwendung AWS PrivateLink, wie in der Snowflake-Dokumentation beschrieben, die in einem vorherigen Artikel verlinkt wurde.
-
Sie müssen in Ihrer Auftragskonfiguration die Verbindung zu Data Catalog als zusätzliche Netzwerkverbindung einschließen.
-
Lesen aus Snowflake-Tabellen
Voraussetzungen: Eine Snowflake-Tabelle, aus der Sie gerne lesen möchten. Sie benötigen den Namen der Snowflake-Tabelle,. tableName
Sie benötigen Ihre Snowflake-URLsnowflakeUrl
, Ihren Benutzernamen und Ihr Passwort. snowflakeUser
snowflakePassword
Wenn Ihr Snowflake-Benutzer keinen Standard-Namespace festgelegt hat, benötigen Sie den Snowflake-Datenbanknamen und den Schemanamen. databaseName
schemaName
Wenn Ihr Snowflake-Benutzer kein Standard-Warehouse-Set hat, benötigen Sie außerdem einen Warehouse-Namen. warehouseName
Zum Beispiel:
Zusätzliche Voraussetzungen: Führen Sie die Schritte zur Verwaltung Ihrer Verbindungsdaten mit AWS Glue aus, um sie zu konfigurierensnowflakeUrl
, snowflakeUsername
undsnowflakePassword
. Weitere Informationen zu diesen Schritten finden Sie im vorherigen Abschnitt unter Konfiguration von Snowflake-Verbindungen. Um auszuwählen, mit welcher zusätzlichen Netzwerkverbindung eine Verbindung hergestellt werden soll, verwenden wir den connectionName
-Parameter.
snowflake_read = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "
connectionName
", "dbtable": "tableName
", "sfDatabase": "databaseName
", "sfSchema": "schemaName
", "sfWarehouse": "warehouseName
", } )
Darüber hinaus können Sie die Parameter autopushdown
und query
verwenden, um einen Teil einer Snowflake-Tabelle zu lesen. Dies kann wesentlich effizienter sein als das Filtern Ihrer Ergebnisse, nachdem diese in Spark geladen wurden. Stellen Sie sich ein Beispiel vor, bei dem alle Verkäufe in derselben Tabelle gespeichert sind, Sie jedoch nur die Verkäufe eines bestimmten Geschäfts an Feiertagen analysieren müssen. Wenn diese Informationen in der Tabelle gespeichert sind, können Sie mithilfe des Prädikat-Pushdowns die Ergebnisse wie folgt abrufen:
snowflake_node = glueContext.create_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "autopushdown": "on", "query": "select * from sales where store='1' and IsHoliday='TRUE'", "connectionName": "snowflake-glue-conn", "sfDatabase": "
databaseName
", "sfSchema": "schemaName
", "sfWarehouse": "warehouseName
", } )
Schreiben in Snowflake-Tabellen
Voraussetzungen: Eine Snowflake-Datenbank, in die Sie schreiben möchten. Sie benötigen einen aktuellen oder gewünschten Tabellennamen,tableName
. Sie benötigen Ihre Snowflake-URLsnowflakeUrl
, Ihren Benutzernamen snowflakeUser
und Ihr Passwort. snowflakePassword
Wenn Ihr Snowflake-Benutzer keinen Standard-Namespace festgelegt hat, benötigen Sie den Snowflake-Datenbanknamen und den Schemanamen. databaseName
schemaName
Wenn Ihr Snowflake-Benutzer kein Standard-Warehouse-Set hat, benötigen Sie außerdem einen Warehouse-Namen. warehouseName
Zum Beispiel:
Zusätzliche Voraussetzungen: Führen Sie die Schritte zur Verwaltung Ihrer Verbindungsdaten mit AWS Glue aus, um sie zu konfigurierensnowflakeUrl
, snowflakeUsername
undsnowflakePassword
. Weitere Informationen zu diesen Schritten finden Sie im vorherigen Abschnitt unter Konfiguration von Snowflake-Verbindungen. Um auszuwählen, mit welcher zusätzlichen Netzwerkverbindung eine Verbindung hergestellt werden soll, verwenden wir den connectionName
-Parameter.
glueContext.write_dynamic_frame.from_options( connection_type="snowflake", connection_options={ "connectionName": "
connectionName
", "dbtable": "tableName
", "sfDatabase": "databaseName
", "sfSchema": "schemaName
", "sfWarehouse": "warehouseName
", }, )
Referenz zur Snowflake-Verbindungsoption
Der Snowflake-Verbindungstyp akzeptiert die folgenden Verbindungsoptionen:
Sie können einige der Parameter in diesem Abschnitt über eine Data-Catalog-Verbindung (sfUrl
, sfUser
, sfPassword
) abrufen. In diesem Fall müssen Sie sie nicht angeben. Sie können dies tun, indem Sie den Parameter connectionName
angeben.
Sie können einige der Parameter in diesem Abschnitt aus einem AWS Secrets Manager geheimen Schlüssel (sfUser
,sfPassword
) abrufen. In diesem Fall müssen Sie sie nicht angeben. Das Secret muss den Inhalt unter den sfUser
- und sfPassword
-Schlüsseln bereitstellen. Sie können dies tun, indem Sie den Parameter secretId
angeben.
Die folgenden Parameter werden im Allgemeinen beim Herstellen einer Verbindung mit Snowflake verwendet.
sfDatabase
– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Die Datenbank, die nach dem Herstellen der Verbindung für die Sitzung verwendet werden soll.sfSchema
– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Das Schema, das für die Sitzung nach dem Herstellen der Verbindung verwendet werden soll.sfWarehouse
– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Das standardmäßige virtuelle Warehouse, das für die Sitzung nach dem Herstellen der Verbindung verwendet wird.sfRole
– Erforderlich, wenn in Snowflake kein Benutzerstandard festgelegt ist. Wird für Lesen/Schreiben verwendet. Die Standardsicherheitsrolle, die nach dem Herstellen der Verbindung für die Sitzung verwendet wird.-
sfUrl
– (Erforderlich) Wird zum Lesen/Schreiben verwendet. Gibt den Hostnamen für Ihr Konto im folgenden Format an:
. Weitere Informationen zu Konto-IDs finden Sie unter Kontobezeichneraccount_identifier
.snowflakecomputing.comin der Snowflake-Dokumentation. sfUser
– (Erforderlich) Wird zum Lesen/Schreiben verwendet. Anmeldename für den Snowflake-Benutzer.sfPassword
– (Erforderlich, außerpem_private_key
wurde angegeben). Wird zum Lesen/Schreiben verwendet. Passwort für den Snowflake-Benutzer.dbtable
– Erforderlich beim Arbeiten mit vollständigen Tabellen. Wird für Lesen/Schreiben verwendet. Der Name der zu lesenden Tabelle bzw. der Tabelle, in die Daten geschrieben werden. Beim Lesen werden alle Spalten und Datensätze abgerufen.-
pem_private_key
– Wird zum Lesen/Schreiben verwendet. Eine unverschlüsselte, b64-kodierte Private-Key-Zeichenfolge. Der private Schlüssel für den Snowflake-Benutzer. Es ist üblich, dies aus einer PEM-Datei zu kopieren. Weitere Informationen finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotationin der Snowflake-Dokumentation. query
– Beim Lesen mit einer Abfrage erforderlich. Wird zum Lesen verwendet. Die genaue Abfrage (SELECT
-Anweisung), die ausgeführt werden soll
Die folgenden Optionen werden zum Konfigurieren spezifischer Verhaltensweisen während des Verbindungsvorgangs mit Snowflake verwendet.
-
preactions
– Wird zum Lesen/Schreiben verwendet. Gültige Werte: Durch Semikolons getrennte Liste von SQL-Anweisungen als Zeichenfolge. SQL-Anweisungen werden ausgeführt, bevor Daten zwischen AWS Glue und Snowflake übertragen werden. Wenn eine Anweisung%s
enthält, wird%s
durch den Tabellennamen ersetzt, auf den für die Operation verwiesen wird. -
postactions
– Wird zum Lesen/Schreiben verwendet. SQL-Anweisungen werden ausgeführt, nachdem Daten zwischen AWS Glue und Snowflake übertragen wurden. Wenn eine Anweisung%s
enthält, wird%s
durch den Tabellennamen ersetzt, auf den für die Operation verwiesen wird. -
autopushdown
– Standardwert:"on"
. Zulässige Werte:"on"
,"off"
. Dieser Parameter steuert, ob das automatische Abfrage-Pushdown aktiviert ist. Wenn Pushdown aktiviert ist, wird bei der Ausführung einer Abfrage auf Spark ein Teil der Abfrage auf den Snowflake-Server „heruntergeschoben“, wenn dies möglich ist. Dies verbessert die Leistung einiger Abfragen. Informationen darüber, ob Ihre Abfrage per Pushdown verschoben werden kann, finden Sie unter Pushdownin der Snowflake-Dokumentation.
Darüber hinaus werden einige der auf dem Snowflake Spark-Konnektor verfügbaren Optionen möglicherweise in AWS Glue unterstützt. Weitere Informationen zu den Optionen, die im Snowflake-Spark-Konnektor verfügbar sind, finden Sie unter Festlegen von Konfigurationsoptionen für den Konnektor
Einschränkungen des Snowflake-Konnektors
Die Verbindung zu Snowflake mit AWS Glue for Spark unterliegt den folgenden Einschränkungen.
-
Dieser Konnektor unterstützt keine Auftragslesezeichen. Weitere Informationen zu Auftragslesezeichen finden Sie unter Verfolgen von verarbeiteten Daten mit Auftragslesezeichen.
-
Dieser Konnektor unterstützt keine Snowflake-Lese- und Schreibvorgänge durch Tabellen im AWS Glue-Datenkatalog mit den Methoden
create_dynamic_frame.from_catalog
undwrite_dynamic_frame.from_catalog
. -
Dieser Konnektor unterstützt keine Verbindung zu Snowflake mit anderen Anmeldeinformationen als Benutzer und Passwort.
-
Dieser Konnektor wird in Streaming-Aufträgen nicht unterstützt.
-
Dieser Konnektor unterstützt anweisungsbasierte
SELECT
-Abfragen beim Abrufen von Informationen (wie z. B. mit demquery
-Parameter). Andere Arten von Abfragen (z. B.SHOW
,DESC
oder DML-Anweisungen) werden nicht unterstützt. -
Snowflake begrenzt die Größe des über Snowflake-Clients übermittelten Abfragetextes (d. h. SQL-Anweisungen) auf 1 MB pro Anweisung. Weitere Einzelheiten finden Sie unter Beschränkungen der Abfragetextgröße
.