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

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. Weitere Informationen zu Snowflake finden Sie unter Snowflake Data Warehouse auf Amazon Web Services. AWS

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
  1. Generieren Sie in Snowflake einen Benutzer snowflakeUser und ein Passwort. snowflakePassword

  2. 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.

  3. 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. account_identifier.snowflakecomputing.com Das URL-Format kann jedoch je nach Ihrem Snowflake-Kontotyp variieren (z. B. Azure oder von Snowflake gehostet). AWS

    • 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

  4. Legen Sie im nächsten Schritt des Assistenten die Eigenschaften für Ihre Snowflake-Verbindung fest.

  5. Ü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: 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 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 Pushdown in 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 in der Snowflake-Dokumentation.

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 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.