Installation et configuration du connecteur Spark

Plusieurs versions du connecteur sont prises en charge. Cependant, Snowflake recommande fortement d’utiliser la version la plus récente du connecteur. Pour voir les informations de publication sur la dernière version, voir les notes de version du connecteur Spark (lien dans la barre latérale).

Les instructions de ce chapitre peuvent être utilisées pour installer et configurer toutes les versions du connecteur prises en charge.

Dans ce chapitre :

Versions prises en charge

Snowflake prend en charge plusieurs versions du connecteur :

Versions du connecteur :

2.x

Versions Spark prises en charge :

Spark 3.0, 2.4, 2.3

Versions Scala prises en charge :

Scala 2.12, 2.11

Nom de source de données :

net.snowflake.spark.snowflake — 2.4.14 (ou version supérieure) du connecteur autorise snowflake comme nom de source de données

Nom de pack (pour des classes importées) :

net.snowflake.spark.snowflake

Distribution de pack :

Maven Central Repository ou Spark Packages

Code source :

spark-snowflake (GitHub) : . master (pour la dernière version), . previous_spark_version (pour les versions antérieures)

Les notes du développeur des différentes versions sont hébergées avec le code source.

Note

Le connecteur Snowflake Spark prend généralement en charge les trois versions les plus récentes de Spark. Téléchargez une version du connecteur spécifique à votre version de Spark.

Par exemple, pour utiliser la version 2.7.2 du connecteur avec Spark 2.3 (version plus ancienne), téléchargez la version 2.7.2-spark_2.3 du connecteur.

Exigences

Pour installer et utiliser Snowflake avec Spark, vous avez besoin des éléments suivants :

  • Un système d’exploitation pris en charge. Pour obtenir la liste des systèmes d’exploitation pris en charge, voir Prise en charge par les systèmes d’exploitation.

  • Connecteur Snowflake pour Spark.

  • Pilote JDBC de Snowflake (la version compatible avec la version du connecteur).

  • Environnement Apache Spark, auto-hébergé ou hébergé dans l’une des formes suivantes :

  • De plus, vous pouvez utiliser un compartiment Amazon S3 dédié ou un conteneur Azure Blob Storage comme zone de mise en zone de préparation entre les deux systèmes. Cependant, cela n’est pas nécessaire avec la version 2.2.0 (et supérieure) du connecteur qui utilise une zone de préparation interne temporaire Snowflake (par défaut) pour tout échange de données.

  • Le rôle utilisé dans la connexion nécessite les privilèges USAGE et CREATE STAGE sur le schéma qui contient la table que vous allez lire ou dans laquelle vous allez écrire.

Note

Si vous utilisez Databricks ou Qubole pour héberger Spark, vous n’avez pas besoin de télécharger ou d’installer le connecteur Snowflake pour Spark (ni aucun de ses prérequis). Databricks et Qubole ont tous deux intégré le connecteur pour fournir une connectivité native.

Pour plus de détails, voir :

Vérification de la version du connecteur ou du pilote OCSP

Snowflake utilise OCSP pour évaluer la chaîne de certificats lors d’une connexion à Snowflake. La version du pilote ou du connecteur et sa configuration déterminent le comportement OCSP. Pour plus d’informations sur la version du pilote ou du connecteur, leur configuration et le comportement de OCSP, voir Configuration d’OCSP.

Téléchargement et installation du connecteur

Les instructions de cette section concernent la version 2.x et les versions supérieures du connecteur Snowflake pour Spark.

Important

Snowflake publie périodiquement de nouvelles versions du connecteur. Les tâches d’installation suivantes doivent être effectuées chaque fois que vous installez une nouvelle version. Ceci s’applique également au pilote JDBC Snowflake qui est une condition préalable pour le connecteur Spark.

Étape 1 : Téléchargement de la dernière version du connecteur Snowflake pour Spark

Snowflake fournit plusieurs versions du connecteur. Vous devrez télécharger la version appropriée en fonction des éléments suivants :

  • Version du connecteur Snowflake pour Spark que vous souhaitez utiliser.

  • La version de Spark que vous utilisez.

  • La version de Scala que vous utilisez.

Le connecteur Spark pour Snowflake peut être téléchargé à partir du site Web de Maven ou de Spark Packages. Le code source peut être téléchargé à partir de Github.

Maven Central Repository

Des artefacts de package distincts sont fournis pour chaque version de Scala prise en charge (2.11 et 2.12). Pour télécharger la dernière version du connecteur à partir de Maven :

  • Pour Scala 2.12, cliquez sur ce lien.

  • Pour Scala 2.11, cliquez sur ce lien.

La capture d’écran suivante fournit un exemple de page de téléchargement du connecteur Spark sur le site Web de Maven :

Snowflake Connector for Spark download page in Maven

Les packages individuels utilisent la convention de dénomination suivante :

N.N.N-spark_P.P

Où :

  • N.N.N est la version de Snowflake (par exemple 2.4.14).

  • P.P est la version Spark (par ex. 2.4).

Par exemple :

2.4.14-spark_2.4

Si vous souhaitez valider la clé gpg du fichier, téléchargez également le fichier de clé associé, nommé spark.jar.asc.

Spark Packages

Pour télécharger la dernière version du connecteur à partir du site Web de Spark Packages, cliquez sur ce lien.

Snowflake utilise les conventions de dénomination suivantes pour les packs :

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

Où :

  • N.N.N est la version de Snowflake (par exemple 2.4.14).

  • C.C est la version de Scala (par exemple 2.11).

  • P.P est la version antérieure de Spark (par exemple 2.3).

Par exemple :

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

GitHub

Le code source du connecteur Spark Snowflake est disponible sur GitHub. Cependant, les packages compilés ne sont pas disponibles sur GitHub. Vous pouvez télécharger les packs compilés à partir de Maven ou du site Web Spark Packages, comme décrit dans les sections précédentes (dans cette rubrique).

Étape 2 : Téléchargement de la version compatible du pilote JDBC Snowflake

Ensuite, vous devez télécharger la version du pilote JDBC de Snowflake qui est compatible avec la version du connecteur Snowflake Spark que vous utilisez.

Le pilote JDBC Snowflake est fourni comme pack Java standard via le Maven Central Repository. Vous pouvez soit télécharger le pack sous la forme d’un fichier .jar, ou vous pouvez directement faire référence au pack. Ces instructions supposent que vous faites référence au pack.

Le tableau suivant répertorie les versions du pilote JDBC Snowflake nécessaires pour les versions sélectionnées du connecteur Snowflake Spark :

Version du connecteur Spark Snowflake

Version prise en charge du pilote JDBC Snowflake

2.8.0 (pour Scala 2.11 et 2.12)

3.12.8

Pour les autres versions du connecteur Snowflake Spark, vous pouvez trouver la version prise en charge du pilote Snowflake JDBC dans le fichier POM du connecteur. Pour afficher le fichier POM, cliquez sur le lien « pom » sur le côté droit de la page de téléchargement du connecteur Spark sur le site Web de Maven :

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

Pour plus de détails sur le téléchargement et l’installation du pilote JDBC Snowflake, voir Téléchargement/intégration du pilote JDBC.

Étape 3 (facultative) : Vérification du connecteur Snowflake pour la signature du pack Spark (Linux uniquement)

Note

Les systèmes d’exploitation macOS et Windows peuvent vérifier automatiquement la signature du programme d’installation, donc la vérification de la signature GPG n’est pas nécessaire.

Pour vérifier (facultatif) le connecteur Snowflake pour la signature du pack Spark pour Linux :

  1. Téléchargez et importez la dernière clé publique GPG de Snowflake à partir du serveur de clés publiques :

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

    Note

    Si vous réinstallez la version du connecteur Spark Snowflake 2.4.12 ou une version inférieure, utilisez l’ID de clé GPG 93DB296A69BE019A au lieu de EC218558EABB25A1.

  2. Si vous n’avez pas encore téléchargé le fichier de clé nommé spark.jar.asc depuis Maven, téléchargez-le.

  3. Téléchargez la signature GPG avec l’installateur bash et vérifiez la signature :

    $ 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. Votre environnement local peut contenir plusieurs clés GPG. Cependant, pour des raisons de sécurité, Snowflake fait tourner périodiquement la clé publique GPG. Nous recommandons de supprimer la clé publique existante après avoir confirmé que la dernière clé fonctionne avec le dernier pack signé. Par exemple :

    $ gpg --delete-key "Snowflake Computing"
    

Étape 4 : Configuration du cluster local Spark ou de l’environnement Spark hébergé sur Amazon EMR

Si vous avez une installation Spark locale, ou une installation Spark dans Amazon EMR, vous devez configurer le programme spark-shell pour inclure le pilote JDBC Snowflake et le connecteur Spark :

  • Pour inclure le pilote JDBC Snowflake, utilisez l’option --package pour faire référence au pack JDBC hébergé dans le Maven Central Repository fournissant la version exacte du pilote que vous désirez utiliser (c-à-d net.snowflake:snowflake-jdbc:3.0.12).

  • Pour inclure le connecteur Spark, utilisez l’option --package pour faire référence au pack correspondant ( Scala 2.11 ou Scala 2.12 ) hébergé dans le Maven Central Repository fournissant la version exacte du pilote que vous désirez utiliser (c-à-d net.snowflake:spark-snowflake_2.12:2.4.14).

Par exemple :

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

Installation de packs supplémentaires (si nécessaire)

En fonction de votre installation Spark, certains packs requis par le connecteur peuvent être manquants. Vous pouvez ajouter des packs manquants à votre installation en utilisant l’indicateur correspondant pour spark-shell :

  • --packages

  • --jars (si les packs ont été téléchargés en tant que fichiers .jar)

Les packs requis sont répertoriés ci-dessous, avec la syntaxe (y compris le numéro de version) pour utiliser l’indicateur --packages pour faire référence aux packs :

  • 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

Par exemple, s’il manque les packs Apache, pour ajouter les packs par référence :

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

Préparation d’un emplacement externe pour les fichiers

Vous devrez peut-être préparer un emplacement externe pour les fichiers que vous voulez transférer entre Snowflake et Spark.

Cette tâche est requise si l’une des situations suivantes est vraie :

  • Vous exécuterez des tâches qui mettent plus de temps que 36 heures. Il s’agit de la durée maximale du jeton utilisé par le connecteur pour accéder à la zone de préparation interne pour l’échange de données.

  • La version Snowflake Connector pour Spark est la 2.1.x ou inférieure (même si vos tâches nécessitent moins de 36 heures).

    Note

    Si vous n’utilisez pas actuellement la version 2.2.0 (ou supérieure) du connecteur, Snowflake recommande vivement la mise à niveau vers la dernière version.

Préparation d’un compartiment S3 AWS externe

Préparez un compartiment S3 externe que le connecteur peut utiliser pour échanger des données entre Snowflake et Spark. Vous fournissez ensuite au connecteur les informations d’emplacement, ainsi que les informations d’identification AWS nécessaires pour l’emplacement. Pour plus de détails, voir Authentification S3 pour l’échange de données dans le chapitre suivant.

Important

Si vous utilisez un compartiment S3 externe, le connecteur ne supprime pas automatiquement les données intermédiaires/temporaires de cet emplacement. Par conséquent, il est préférable d’utiliser un compartiment ou un chemin spécifique (préfixe), et de définir une politique de cycle de vie sur le compartiment/chemin pour nettoyer automatiquement les anciens fichiers. Voir la documentation Amazon S3 pour plus de détails sur la configuration d’une politique de cycle de vie.

Préparation d’un conteneur de stockage Azure Blob

Préparez un conteneur de stockage externe Azure Blob que le connecteur peut utiliser pour échanger des données entre Snowflake et Spark. Vous fournissez ensuite au connecteur les informations d’emplacement, ainsi que les informations d’identification Azure nécessaires pour l’emplacement. Pour plus de détails, voir Authentification Azure pour l’échange de données dans le chapitre suivant.