Sparkコネクターのインストールと構成

コネクターの複数のバージョンがサポートされていますが、Snowflakeでは、最新バージョンのコネクターを使用することを強くお勧めします。最新バージョンに関するリリース情報を表示するには、 Sparkコネクターリリースノート (サイドバーのリンク)をご参照ください。

このトピックの手順を使用して、サポートされているすべてのバージョンのコネクターをインストールして構成できます。

このトピックの内容:

サポートされているバージョン

Snowflakeは、コネクターの複数のバージョンをサポートしています。

コネクターのバージョン:

2.x

対応するSparkバージョン:

Spark 3.0、2.4、2.3

対応するScalaバージョン:

Scala 2.12、2.11

データソース名:

net.snowflake.spark.snowflake --- v2.4.14(またはそれ以上)のコネクターは、データソース名として snowflake を許可します

パッケージ名(インポートされたクラスの場合):

net.snowflake.spark.snowflake

パッケージ配布:

Maven Central Repository または Sparkパッケージ

ソースコード:

spark-snowflake(GitHub). master (最新バージョンの場合)、 . previous_spark_version (以前のバージョンの場合)

さまざまなバージョンの開発者ノートは、ソースコードでホストされています。

注釈

SnowflakeのSparkコネクターは、通常、Sparkの最新の3つのバージョンをサポートしています。Sparkバージョンに固有のバージョンのコネクタをダウンロードします。

たとえば、古いSparkバージョン2.3でバージョン2.7.2のコネクタを使用するには、コネクタの 2.7.2-spark_2.3 バージョンをダウンロードします。

要件

SparkでSnowflakeをインストールして使用するには、次が必要です。

  • サポートされているオペレーティングシステム。サポートされているオペレーティングシステムのリストについては、 オペレーティングシステムのサポート をご参照ください。

  • Spark用Snowflakeコネクタ。

  • Snowflake JDBC ドライバー(コネクタのバージョンと互換性のあるバージョン)。

  • 自己ホスト型または次のいずれかでホストされるApache Spark環境:

  • 加えて、2つのシステム間のステージングゾーンとして、専用のAmazon S3バケットまたはAzure Blobストレージコンテナを使用できます。ただし、これは、すべてのデータ交換に一時的なSnowflake内部ステージ(デフォルト)を使用するコネクターのバージョン2.2.0(以降)では必要ありません。

  • 接続で使用されるロールには、読み取りまたは書き込みを行うテーブルを含むスキーマに対する USAGE および CREATE STAGE 権限が必要です。

注釈

DatabricksまたはQuboleを使用してSparkをホストしている場合、Spark用のSnowflakeコネクター(またはその他の要件)をダウンロードまたはインストールする必要はありません。DatabricksとQuboleの両方がコネクターを統合して、ネイティブ接続を提供します。

詳細については、以下をご参照ください:

OCSP コネクターまたはドライバーバージョンの確認

Snowflakeは、Snowflakeへの接続の際、 OCSP を使用して証明書チェーンを評価します。ドライバーまたはコネクターのバージョンとその構成により、 OCSP の動作が決まります。ドライバーまたはコネクタのバージョン、それらの構成、および OCSP の動作の詳細については、 OCSP 設定 をご参照ください。

コネクターのダウンロードとインストール

このセクションの手順は、Spark用のSnowflakeコネクターのバージョン2.x以降に関連しています。

重要

Snowflakeは定期的に新しいバージョンのコネクターをリリースします。新しいバージョンをインストールするたびに、次のインストールタスクを実行する必要があります。これは、Spark用コネクタの前提条件であるSnowflake JDBC ドライバーにも適用されます。

ステップ1:Spark用Snowflakeコネクタの最新バージョンをダウンロードする

Snowflakeでは、コネクタの複数のバージョンを提供しています。以下に基づいて、適切なバージョンをダウンロードする必要があります。

  • 使用するSpark用のSnowflakeコネクターのバージョン。

  • 使用しているSparkのバージョン。

  • 使用しているScalaのバージョン。

SnowflakeのSparkコネクターは、MavenまたはSparkパッケージのウェブサイトからダウンロードできます。ソースコードはGithubからダウンロードできます。

Maven Central Repository

サポートされるScalaバージョン(2.11、および2.12)ごとに個別のパッケージアーティファクトが提供されます。Mavenからコネクタの最新バージョンをダウンロードするには、次を実行します。

次のスクリーンショットは、MavenウェブサイトにおけるSparkコネクタのダウンロードページの例を示しています。

Snowflake Connector for Spark download page in Maven

個々のパッケージでは、次の命名規則を使用します。

N.N.N-spark_P.P

条件:

  • N.N.N は、Snowflakeバージョン(例:2.4.14)。

  • P.P は、Sparkバージョン(例:2.4)。

例:

2.4.14-spark_2.4

ファイルのgpgキーを検証する場合は、spark.jar.ascという名前の関連キーファイルもダウンロードします。

Sparkパッケージ

Sparkパッケージウェブサイトからコネクターの最新バージョンをダウンロードするには、 このリンク をクリックします。

Snowflakeでは、パッケージに次の命名規則を使用します。

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

条件:

  • N.N.N は、Snowflakeバージョン(例:2.4.14)。

  • C.C は、Scalaバージョン(例:2.11)。

  • P.P は、以前のSparkバージョン(例:2.3)。

例:

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

GitHub

Spark用のSnowflakeコネクターのソースコードは GitHub で入手できます。ただし、コンパイル済みパッケージは GitHub で利用できません。前のセクション(このトピック内)で説明したように、MavenまたはSparkパッケージのウェブサイトからコンパイル済みパッケージをダウンロードできます。

ステップ2:Snowflake JDBC ドライバーの互換バージョンをダウンロードする

次に、使用しているSnowflake Sparkコネクタのバージョンと互換性のあるSnowflake JDBC ドライバーのバージョンをダウンロードする必要があります。

Snowflake JDBC ドライバーは、Maven Central Repository を介して標準Javaパッケージとして提供されます。パッケージを .jar ファイルとしてダウンロードするか、パッケージを直接参照します。これらの手順は、パッケージを参照していることを前提としています。

次のテーブルに、選択したバージョンのSnowflake Sparkコネクタに必要なSnowflake JDBC ドライバーのバージョンを示します。

Snowflake Sparkコネクタのバージョン

サポートされているSnowflake JDBC ドライバーのバージョン

2.8.0(Scala 2.11および2.12用)

3.12.8

Snowflake Sparkコネクタの他のバージョンの場合、サポートされているバージョンのSnowflake JDBC ドライバーは、コネクタの POM ファイルにあります。POM ファイルを表示するには、MavenウェブサイトのSparkコネクタ用ダウンロードページの右側にある「pom」リンクをクリックします。

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

Snowflake JDBC ドライバーのダウンロードとインストールの詳細については、 JDBC ドライバーのダウンロード/統合 をご参照ください。

ステップ3(オプション):Sparkパッケージ署名用Snowflakeコネクタを検証する(Linuxのみ)

注釈

macOS およびWindowsオペレーティングシステムはインストーラーの署名を自動的に検証できるため、 GPG 署名の検証は不要です。

オプションで、LinuxについてSpark用のSnowflakeコネクターパッケージの署名を検証するには、次を実行します。

  1. 公開キーサーバーから最新のSnowflake GPG 公開キーをダウンロードしてインポートします。

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

    注釈

    Spark用のSnowflakeコネクターのバージョン 2.4.12 以下を再インストールする場合は、 EC218558EABB25A1 ではなく GPG キー ID 93DB296A69BE019A を使用します。

  2. spark.jar.ascという名前のキーファイルをMavenからダウンロードしていない場合は、ダウンロードします。

  3. bashインストーラーとともに GPG 署名をダウンロードし、署名を検証します。

    $ 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. ローカル環境には複数の GPG キーを含めることができます。ただし、セキュリティ上の理由から、Snowflakeは定期的に公開 GPG キーをローテーションします。ベストプラクティスとして、最新の署名済みパッケージで最新のキーが機能することを確認した後、既存の公開キーを削除することをお勧めします。例:

    $ gpg --delete-key "Snowflake Computing"
    

ステップ4:ローカルSparkクラスターまたはAmazon EMR がホストするSpark環境を構成する

ローカルのSparkインストール、または Amazon EMR でのSparkインストール がある場合は、Snowflake JDBC ドライバーとSparkコネクタの両方を含めるように spark-shell プログラムを構成する必要があります。

  • Snowflake JDBC ドライバーを含めるには、 --package オプションを使用して、Maven Central Repositoryでホストされている JDBCパッケージ を参照し、 使用するドライバーの正確なバージョン (例: net.snowflake:snowflake-jdbc:3.0.12)を提供します。

  • Sparkコネクタを含めるには、 --package オプションを使用して、Maven Central Repositoryでホストされている適切なパッケージ( Scala 2.11 または Scala 2.12)を参照し、使用するドライバーの正確なバージョン(例: net.snowflake:spark-snowflake_2.12:2.4.14)を入手します。

例:

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

追加パッケージのインストール(必要な場合)

Sparkのインストールによっては、コネクタに必要な一部のパッケージが欠落している場合があります。 spark-shell の適切なフラグを使用して、欠落しているパッケージをインストールに追加できます。

  • --packages

  • --jars (パッケージが .jar ファイルとしてダウンロードされた場合)

必要なパッケージは、 --packages フラグを使用してパッケージを参照するための構文(バージョン番号を含む)とともに以下にリストされています。

  • 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

たとえば、Apacheパッケージが欠落している場合に、参照でパッケージを追加するには、次を実行します。

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

ファイル用の外部の場所の準備

SnowflakeとSparkの間で転送するファイルの外部の場所を準備する必要が生じることがあります。

次のいずれかの状況に該当する場合、このタスクが必要です。

  • 36時間より長い時間がかかるジョブを実行する場合。これは、データ交換のために内部ステージにアクセスするためにコネクターが使用するトークンの最大期間です。

  • Spark用のSnowflakeコネクターのバージョンが2.1.x以下の場合(ジョブの所要時間が36時間未満の場合でも)。

    注釈

    現在、コネクターのv2.2.0(またはそれ以降)を使用していない場合は、Snowflakeは最新バージョンにアップグレードすることを強くお勧めします。

AWS 外部S3バケットの準備

コネクターでSnowflakeとSparkの間でデータを交換するために使用する外部S3バケットを準備します。次に、場所に必要な AWS 認証情報とともに、場所情報をコネクターに提供します。詳細については、次のトピックの「データ交換のためのS3の認証」をご参照ください。

重要

外部S3バケットを使用する場合、コネクターはこの場所から中間/一時データを自動的に削除しません。そのため、特定のバケットまたはパス(プレフィックス)を使用し、バケット/パスにライフサイクルポリシーを設定して、古いファイルを自動的にクリーンアップすることをお勧めします。ライフサイクルポリシーの設定の詳細については、 Amazon S3のドキュメント をご参照ください。

Azure Blobストレージコンテナの準備

コネクターでSnowflakeとSparkの間でデータを交換するために使用する外部Azure Blobストレージコンテナを準備します。次に、場所に必要なAzure認証情報とともに、場所情報をコネクターに提供します。詳細については、次のトピックの「データ交換のためのAzureの認証」をご参照ください。