Snowflake-Verbindungen - AWS Glue

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

Sie können AWS Glue für Spark zum Lesen und Schreiben in Tabellen in Snowflake in AWS Glue 4.0 und späteren Versionen verwenden. 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 die in AWS Secrets Manager gespeicherten Snowflake-Anmeldeinformationen über den AWS-Glue-Data-Katalog verweisen. Data-Catalog-Snowflake-Anmeldeinformationen für AWS Glue für 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. Weitere Informationen zu Snowflake in AWS finden Sie unter Snowflake Data Warehouse in Amazon Web Services.

Konfiguration von Snowflake-Verbindungen

Es gibt keine AWS-Voraussetzungen für die Verbindung mit Snowflake-Datenbanken, die über das Internet verfügbar sind.

Optional können Sie die folgende Konfiguration durchführen, um Ihre Verbindungsanmeldeinformationen mit AWS Glue zu verwalten.

So verwalten Sie Ihre Verbindungsdaten mit AWS Glue
  1. Generieren Sie in Snowflake einen Benutzer snowflakeUser und ein Kennwort snowflakePassword.

  2. Erstellen Sie in AWS Secrets Manager ein Secret mit Ihren Snowflake-Anmeldeinformationen. Um ein Geheimnis im Secrets Manager zu erstellen, befolgen Sie das Tutorial unter Erstellen eines AWS Secrets Manager-Secrets in der AWS Secrets Manager-Dokumentation. Behalten Sie nach dem Erstellen des Secrets den Namen des Secrets, secretName für den nächsten Schritt bei.

    • Erstellen Sie bei der Auswahl von Schlüssel/Wert-Paaren ein Paar für snowflakeUser mit dem Schlüssel sfUser.

    • Erstellen Sie bei der Auswahl von Schlüssel/Wert-Paaren ein Paar für snowflakePassword mit dem Schlüssel sfPassword.

    • Bei der Auswahl von Schlüssel/Wert-Paaren können Sie Ihrem Snowflake-Warehouse den Schlüssel sfWarehouse bereitstellen.

  3. Erstellen Sie im AWS Glue Data Catalog eine Verbindung, indem Sie die Schritte in Hinzufügen einer AWS Glue-Verbindung befolgen. Behalten Sie nach dem Erstellen der Verbindung den Verbindungsnamen connectionName für den nächsten Schritt bei.

    • Wählen Sie bei der Auswahl eines Verbindungstyps Snowflake aus.

    • Geben Sie bei der Auswahl der Snowflake-URL die URL Ihrer Snowflake-Instance an. Die URL verwendet einen Hostnamen im Format account_identifier.snowflakecomputing.com.

    • Geben Sie bei der Auswahl eines AWS-Secrets die Option secretName an.

  4. Geben Sie in Ihrer AWS-Glue-Auftragskonfiguration connectionName als zusätzliche Netzwerkverbindung an.

In den folgenden Situationen benötigen Sie möglicherweise Folgendes:

  • Für Snowflake, gehostet in AWS in einer 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 VPC Schnittstellenendpunkten (AWS PrivateLink) für AWS Glue (AWS PrivateLink).

    • Sie müssen eine Verbindung von AWS Glue Data Catalog erstellen, die Amazon-VPC-Verbindungsinformationen bereitstellt (zusätzlich zur ID eines AWS Secrets Manager-Secrets, das Ihre Snowflake-Sicherheitsanmeldeinformationen definiert). Ihre URL ändert sich, wenn Sie AWS PrivateLink verwenden, wie in der Snowflake-Dokumentation beschrieben, die in einem früheren Element verlinkt ist.

    • 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-URL snowflakeUrl, username snowflakeUser und das Passwort snowflakePassword. Wenn für Ihren Snowflake-Benutzer kein Standard-Namespace festgelegt ist, benötigen Sie den Namen der Snowflake-Datenbank, databaseName und den Schemanamen schemaName. Wenn Ihr Snowflake-Benutzer außerdem kein Standard-Warehouse festgelegt hat, benötigen Sie einen Warehouse-Namen, warehouseName.

Beispielsweise:

Zusätzliche Voraussetzungen: Führen Sie die Schritte zum Verwalten Ihrer Verbindungsanmeldeinformationen mit AWS Glue aus, um snowflakeUrl, snowflakeUsername und snowflakePassword zu konfigurieren. 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-URL snowflakeUrl, username snowflakeUser und das Passwort snowflakePassword. Wenn für Ihren Snowflake-Benutzer kein Standard-Namespace festgelegt ist, benötigen Sie den Namen der Snowflake-Datenbank, databaseName und den Schemanamen schemaName. Wenn Ihr Snowflake-Benutzer außerdem kein Standard-Warehouse festgelegt hat, benötigen Sie einen Warehouse-Namen, warehouseName.

Beispielsweise:

Zusätzliche Voraussetzungen: Führen Sie die Schritte zum Verwalten Ihrer Verbindungsanmeldeinformationen mit AWS Glue aus, um snowflakeUrl, snowflakeUsername und snowflakePassword zu konfigurieren. 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-Secret (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: account_identifier.snowflakecomputing.com. Weitere Informationen zu Konto-IDs finden Sie unter Kontobezeichner in der Snowflake-Dokumentation.

  • sfUser – (Erforderlich) Wird zum Lesen/Schreiben verwendet. Anmeldename für den Snowflake-Benutzer.

  • sfPassword – (Erforderlich, außer pem_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-Rotation in 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 nach der Datenübertragung zwischen AWS Glue und Snowflake ausgeführt. 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 Pushdown in der Snowflake-Dokumentation.

Darüber hinaus werden einige der auf dem Snowflake-Spark-Konnektor verfügbaren Optionen möglicherweise auch 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 in der Snowflake-Dokumentation.

Einschränkungen des Snowflake-Konnektors

Das Herstellen einer Verbindung zu Snowflake mit AWS Glue für 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 über Tabellen im AWS Glue Data Catalog mithilfe der create_dynamic_frame.from_catalog- und write_dynamic_frame.from_catalog-Methoden.

  • 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 dem query-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.