Installieren und Konfigurieren des Spark-Konnektors

Es werden mehrere Versionen des Konnektors unterstützt. Snowflake empfiehlt jedoch dringend die Verwendung der neuesten Version des Konnektors. Hinweise zur Anzeige von Release-Informationen zur neueste Version finden Sie unter Versionshinweise zum Spark-Konnektor (Link in der Seitenleiste).

Die Anweisungen unter diesem Thema können zur Installation und Konfiguration aller unterstützten Versionen des Konnektors verwendet werden.

Unter diesem Thema:

Unterstützte Versionen

Snowflake unterstützt mehrere Versionen des Konnektors:

Konnektorversionen:

2.x

Unterstützte Spark-Versionen:

Spark 3.0, 2.4, 2.3

Unterstützte Scala-Versionen:

Scala 2.12 und 2.11

Name der Datenquelle:

net.snowflake.spark.snowflake – v2.4.14 (oder höher) des Konnektors erlaubt snowflake als Datenquellennamen

Paketname (für importierte Klassen):

net.snowflake.spark.snowflake

Paketverteilung:

Zentrales Maven-Repository oder Spark Packages

Quellcode:

spark-snowflake (GitHub): . master (für neueste Version), . previous_spark_version (für frühere Versionen)

Die Entwicklerhinweise für die verschiedenen Versionen werden zusammen mit dem Quellcode gehostet.

Bemerkung

Der Snowflake-Konnektor für Spark unterstützt im Allgemeinen die drei neuesten Versionen von Spark. Laden Sie eine Version des Konnektors herunter, die für Ihre Spark-Version entwickelt wurde.

Laden Sie beispielsweise die Version 2.7.2-spark_2.3 des Konnektors herunter, um Version 2.7.2 des Konnektors mit der älteren Spark-Version 2.3 zu verwenden.

Anforderungen

Um Snowflake mit Spark zu installieren und zu verwenden, benötigen Sie Folgendes:

  • Ein unterstütztes Betriebssystem. Eine Liste der unterstützten Betriebssysteme finden Sie unter Betriebssystemunterstützung.

  • Snowflake-Konnektor für Spark

  • Snowflake-JDBC-Treiber (die mit der Version des Konnektors kompatible Version).

  • Apache Spark-Umgebung, entweder selbst gehostet oder in einer der folgenden Umgebungen gehostet:

  • Darüber hinaus können Sie einen dedizierten Amazon S3-Bucket oder einen Azure Blob-Speichercontainer als Stagingzone zwischen den beiden Systemen verwenden. Dies ist jedoch ab Version 2.2.0 des Konnektors nicht mehr erforderlich, da dieser (standardmäßig) einen temporären internen Snowflake-Stagingbereich für den gesamten Datenaustausch verwendet.

  • Die für die Verbindung verwendete Rolle benötigt USAGE- und CREATE STAGE-Berechtigungen für das Schema, das die Tabelle enthält, aus der Sie lesen bzw. in die Sie schreiben werden.

Bemerkung

Wenn Sie Databricks oder Qubole für das Hosting von Spark verwenden, müssen Sie den Snowflake-Konnektor für Spark (oder eine seiner anderen Voraussetzungen) nicht herunterladen oder installieren. Sowohl bei Databricks als auch Qubole ist der Konnektor integriert, um eine native Konnektivität sicherzustellen.

Weitere Details dazu finden Sie unter:

Überprüfen der OCSP-Konnektor- oder Treiber-Version

Snowflake verwendet OCSP, um die Zertifikatkette beim Herstellen einer Verbindung zu Snowflake auszuwerten. Die Version von Treiber oder Konnektor bestimmt zusammen mit deren Konfiguration das OCSP-Verhalten. Weitere Informationen zur Treiber- oder Konnektor-Version, ihrer Konfiguration und zum OCSP-Verhalten finden Sie unter OCSP-Konfiguration.

Herunterladen und Installieren des Konnektors

Die Anweisungen in diesem Abschnitt beziehen sich auf die Version 2.x und höher des Snowflake-Konnektors für Spark.

Wichtig

Snowflake veröffentlicht regelmäßig neue Versionen des Konnektors. Die folgenden Installationsaufgaben müssen bei jeder Installation einer neuen Version durchgeführt werden. Dies gilt auch für den Snowflake-JDBC-Treiber, der eine Voraussetzung für den Spark-Konnektor ist.

Schritt 1: Neueste Version des Snowflake-Konnektors für Spark herunterladen

Snowflake bietet mehrere Versionen des Konnektors an. Sie müssen die entsprechende Version auf Basis folgender Aspekte herunterladen:

  • Version des Snowflake-Konnektors für Spark, die Sie verwenden möchten.

  • Version von Spark, die Sie verwenden.

  • Version von Scala, die Sie verwenden.

Der Snowflake-Konnektor für Spark kann entweder von Maven oder von der Spark Packages-Website heruntergeladen werden. Der Quellcode kann von Github heruntergeladen werden.

Zentrales Maven-Repository

Für jede unterstützte Scala-Version (2.11 und 2.12) werden separate Paketartefakte bereitgestellt. So laden Sie die neueste Version des Konnektors von Maven herunter:

Der folgende Screenshot zeigt das Beispiel einer Download-Seite für den Spark-Konnektor auf der Maven-Website:

Snowflake Connector for Spark download page in Maven

Die einzelnen Pakete verwenden die folgende Namenskonvention:

N.N.N-spark_P.P

Wobei:

  • N.N.N ist die Snowflake-Version (z. B. 2.4.14).

  • P.P ist die Spark-Version (z. B. 2.4).

Beispiel:

2.4.14-spark_2.4

Wenn Sie den GPG-Schlüssel der Datei validieren möchten, laden Sie auch die zugehörige Schlüsseldatei mit dem Namen „spark.jar.asc“ herunter.

Spark-Pakete

Klicken Sie auf diesen Link, um die neueste Version des Konnektors von der Spark Packages-Website herunterzuladen.

Snowflake verwendet die folgenden Namenskonventionen für die Pakete:

N.N.N-s_C.C-spark_P.P

Wobei:

  • N.N.N ist die Snowflake-Version (z. B. 2.4.14).

  • C.C ist die Scala-Version (z. B. 2.11).

  • P.P ist die frühere Spark-Version (z. B. 2.3).

Beispiel:

2.4.14-s_2.11
2.4.14-s_2.11-spark_2.3

GitHub

Der Quellcode für den Snowflake-Konnektor für Spark ist auf GitHub verfügbar. Die kompilierten Pakete sind jedoch nicht auf GitHub verfügbar. Die kompilierten Pakete können Sie von Maven oder der Spark Packages-Website herunterladen, wie in den vorherigen Abschnitten (unter diesem Thema) beschrieben.

Schritt 2: Laden Sie die kompatible Version des Snowflake-JDBC-Treibers herunter

Als Nächstes müssen Sie die Version des Snowflake-JDBC-Treibers herunterladen, die mit der von Ihnen verwendeten Version des Snowflake-Spark-Konnektor kompatibel ist.

Der Snowflake-JDBC-Treiber wird als Standard-Java-Paket über das Maven Central Repository bereitgestellt. Sie können das Paket entweder als .jar-Datei herunterladen oder direkt das Paket referenzieren. Bei dieser Anleitung wird davon ausgegangen, dass Sie das Paket referenzieren.

In der folgenden Tabelle sind die Versionen des Snowflake-JDBC-Treibers aufgeführt, die für ausgewählte Versionen des Snowflake-Spark-Konnektor benötigt werden:

Version des Snowflake-Spark-Konnektors

Unterstützte Version des Snowflake-JDBC-Treibers

2.8.0 (für Scala 2.11 und 2.12)

3.12.8

Für andere Versionen des Snowflake-Spark-Konnektors finden Sie die unterstützte Version des Snowflake-JDBC-Treibers in der POM-Datei für den Konnektor. Klicken Sie zum Anzeigen der POM-Datei auf der Maven-Website auf der Downloadseite für den Spark-Konnektor rechts auf den Link „pom“:

"pom" link in the Snowflake Connector for Spark download page in Maven

Weitere Informationen zum Herunterladen und Installieren des Snowflake-JDBC-Treibers finden Sie unter Herunterladen und Integrieren des JDBC-Treibers.

Schritt 3 (optional): Überprüfen der Spark Package-Signatur des Snowflake-Konnektors für Spark (nur Linux)

Bemerkung

Die Betriebssysteme macOS und Windows können die Signatur des Installers automatisch überprüfen, sodass eine GPG-Signaturprüfung nicht erforderlich ist.

So überprüfen Sie optional die Spark Package-Signatur des Snowflake-Konnektors für Spark unter Linux:

  1. Laden Sie den neuesten öffentlichen Snowflake-GPG-Schlüssel vom öffentlichen Keyserver herunter, und importieren Sie diesen:

    $ gpg --keyserver hkp://keys.gnupg.net --recv-keys EC218558EABB25A1

    Bemerkung

    Bei einer erneuten Installation der Spark Snowflake Konnektor-Version 2.4.12 oder niedriger verwenden Sie die GPG-Schlüssel-ID 93DB296A69BE019A anstelle von EC218558EABB25A1.

  2. Wenn Sie die Schlüsseldatei „spark.jar.asc“ noch nicht von Maven heruntergeladen haben, laden Sie sie herunter.

  3. Laden Sie die GPG-Signatur zusammen mit dem bash-Installationsprogramm herunter, und überprüfen Sie die Signatur:

    $ gpg --verify spark.jar.asc spark-snowflake_2.12-2.8.0-spark_3.0.jar
    gpg: Signature made Wed 22 Feb 2017 04:31:58 PM UTC using RSA key ID EC218558EABB25A1
    gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>"
  4. Ihre lokale Umgebung kann mehrere GPG-Schlüssel enthalten. Aus Sicherheitsgründen rotiert Snowflake jedoch regelmäßig den öffentlichen GPG-Schlüssel. Als Best Practice empfehlen wir, den vorhandenen öffentlichen Schlüssel zu löschen, nachdem wir bestätigt haben, dass der letzte Schlüssel mit dem zuletzt signierten Paket funktioniert. Beispiel:

    $ gpg --delete-key "Snowflake Computing"
    

Schritt 4: Lokales Spark-Cluster oder die von Amazon EMR gehostete Spark-Umgebung konfigurieren

Wenn Sie eine lokale Spark-Installation oder eine Spark-Installation in Amazon EMR verwenden, müssen Sie das spark-shell-Programm so konfigurieren, dass es sowohl den Snowflake-JDBC-Treiber als auch den Spark-Konnektor enthält:

  • Zum Einbinden des Snowflake-JDBC-Treibers verwenden Sie die Option --package mit dem Verweis auf das im zentralen Maven-Repository gehostete JDBC-Paket, das die passende Version des gewünschten Treibers bereitstellt (z. B. net.snowflake:snowflake-jdbc:3.0.12).

  • Zum Einbinden des Spark-Konnektors verwenden Sie die Option --package mit dem Verweis auf das entsprechende Paket (Scala 2.11 oder Scala 2.12), das im zentralen Maven-Repository gehostet wird und die passende Version des gewünschten Treibers enthält (z. B. net.snowflake:spark-snowflake_2.12:2.4.14).

Beispiel:

spark-shell --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.12:2.4.14

Installieren zusätzlicher Pakete (falls erforderlich)

Abhängig von Ihrer Spark-Installation fehlen möglicherweise einige vom Konnektor benötigte Pakete. Sie können Pakete, die Ihrer Installation fehlen, hinzufügen, indem Sie das entsprechende Flag für spark-shell verwenden:

  • --packages

  • --jars (wenn die Pakete als .jar-Dateien heruntergeladen wurden)

Die erforderlichen Pakete sind unten mit der Syntax (einschließlich Versionsnummer) für die Verwendung des --packages-Flags zum Verweisen auf die Pakete aufgeführt:

  • org.apache.hadoop:hadoop-aws:2.7.1

  • org.apache.httpcomponents:httpclient:4.3.6

  • org.apache.httpcomponents:httpcore:4.3.3

  • com.amazonaws:aws-java-sdk-core:1.10.27

  • com.amazonaws:aws-java-sdk-s3:1.10.27

  • com.amazonaws:aws-java-sdk-sts:1.10.27

Wenn beispielsweise die Apache-Pakete fehlen, können Sie die Pakete per Referenz hinzufügen:

spark-shell --packages org.apache.hadoop:hadoop-aws:2.7.1,org.apache.httpcomponents:httpclient:4.3.6,org.apache.httpcomponents:httpcore:4.3.3

Vorbereiten eines externen Speicherorts für Dateien

Möglicherweise müssen Sie einen externen Speicherort für Dateien vorbereiten, die Sie zwischen Snowflake und Spark übertragen möchten.

Die Ausführung dieser Aufgabe ist erforderlich, wenn eine der folgenden Situationen zutrifft:

  • Sie möchten Jobs ausführen, die länger als 36 Stunden dauern. Dies ist die maximale Dauer für das Token, das der Konnektor verwendet, um auf den internen Stagingbereich für den Datenaustausch zuzugreifen.

  • Die Snowflake-Konnektor für Spark-Version ist 2.1.x oder niedriger (auch wenn Ihre Jobs weniger als 36 Stunden benötigen).

    Bemerkung

    Wenn Sie derzeit nicht die Version 2.2.0 (oder höher) des Konnektors verwenden, empfiehlt Snowflake dringend ein Upgrade auf die neueste Version.

Vorbereiten eines externen AWS S3-Buckets

Bereiten Sie einen externen S3-Bucket vor, mit dem der Konnektor Daten zwischen Snowflake und Spark austauschen kann. Anschließend stellen Sie dem Konnektor die Speicherortinformationen sowie die für den AWS-Zugang am Speicherort erforderlichen Anmeldeinformationen zur Verfügung. Weitere Details dazu finden Sie unter dem nächsten Thema unter Authentifizierung von S3 für den Datenaustausch.

Wichtig

Wenn Sie einen externen S3-Bucket verwenden, entfernt der Konnektor nicht automatisch die zwischengespeicherten/temporären Daten von diesem Speicherort. Daher ist es am besten, einen bestimmten Bucket oder Pfad (Präfix) zu verwenden und eine Lebenszyklusrichtlinie für den Bucket/Pfad festzulegen, um ältere Dateien automatisch zu bereinigen. Weitere Informationen zur Konfiguration einer Lebenszyklusrichtlinie finden Sie in der Amazon S3-Dokumentation.

Vorbereiten eines Azure Blob-Speichercontainers

Bereiten Sie einen externen Azure Blob-Speichercontainer vor, über den der Konnektor Daten zwischen Snowflake und Spark austauschen kann. Stellen Sie anschließend dem Konnektor die Speicherortinformationen sowie die für den Azure-Zugang am Speicherort erforderlichen Anmeldeinformationen zur Verfügung. Weitere Details dazu finden Sie unter dem nächsten Thema unter Authentifizieren von Azure für den Datenaustausch.