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

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

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

このトピックの内容:

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

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

Snowflake Spark Connectorバージョン:

3.x, 2.x

対応するSparkバージョン:

Connectorバージョン 3.x:Spark 3.5、3.4、3.3、3.2 . Connectorバージョン 2.x:Spark 3.4、3.3、3.2

対応するScalaバージョン:

Scala 2.13 . Scala 2.12

データソース名:

Connectorバージョン3.xおよび2.x: net.snowflake.spark.snowflake --- v2.10.0(またはそれ以降)のコネクターでは、データソース名として snowflake を許可します。

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

net.snowflake.spark.snowflake

パッケージ配布:

Maven Central Repository の Scala 2.13 . Maven Central Repository の Scala 2.12

ソースコード:

Snowflake (GitHub) . master (最新バージョン用), . previous_spark_version (それ以前のバージョン用)

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

注釈

  • 3.x: Snowflake Spark Connectorのバージョン3.0.0以降では、1つのバージョンで複数のバージョンのSparkをサポートします。

  • 2.x: 2.x用のSnowflake Spark Connectorは、一般的に3つの最新バージョンのSparkをサポートしています。Sparkバージョンに固有のコネクタバージョンをダウンロードします。たとえば、Sparkバージョン3.4でバージョン2.16.0のコネクタを使用するには、コネクタの 2.16.0-spark_3.4 バージョンをダウンロードします。

要件

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からダウンロードできます。ドライバーをビルドしたい場合は、 GitHub からソースコードにアクセスできます。

Maven Central Repository

サポートされるScalaバージョン(2.12、および2.13)ごとに、個別のパッケージアーティファクトがSnowflakeにより提供されます。これらのScalaバージョンごとに、異なるバージョンのSparkコネクタと、異なるバージョンのSparkをサポートする個別のアーティファクトがSnowflakeにより提供されます。

Sparkコネクタをダウンロードするには、

  1. Snowflake Spark Connectorの希望のバージョンをMavenリポジトリで検索します。

    次のスクリーンショットは、検索結果ページの例を示しています。

    MavenのSpark用Snowflakeコネクタのダウンロードページ
  2. Latest version のラベルはドライバーの最新バージョンを示しています。以前のバージョンをダウンロードしたい場合は、最新バージョンの横にある View all リンクをクリックすると、利用可能なすべてのパッケージが表示されます。以下のスクリーンショットは、Spark-snowflake_2.12で利用可能なすべてのパッケージの例です。

    Spark Connectorの利用可能パッケージリスト

    Snowflake Spark Connectorバージョン2.xの個々のパッケージは、以下の命名規則を使用しています。

    net.snowflake:spark-snowflake_C.C:N.N.N-spark_P.P
    
    Copy

    条件:

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

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

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

    例:

    net.snowflake:spark-snowflake_2.12:2.16.0-spark_3.4
    
    Copy

    Snowflake Spark Connectorバージョン3.xの個々のパッケージは、以下の命名規則を使用しています。

    net.snowflake:spark-snowflake_C.C:N.N.N
    
    Copy

    条件:

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

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

    例:

    net.snowflake:spark-snowflake_2.13:3.1.1
    
    Copy
  3. ダウンロードしたいバージョンの横にある Browse リンクをクリックし、 JAR ファイルを選択してダウンロードしてください。

    Spark用Snowflake Connector ダウンロード可能アーティファクトページ
  4. パッケージの署名を確認する 場合は、署名ファイルもダウンロードする必要があります。.jar.asc ファイル名の拡張子をクリックします(たとえば、 net.snowflake:spark-snowflake_2.13:3.1.1.jar.asc または net.snowflake:spark-snowflake_2.12:2.16.0-spark_3.4.jar.asc)。

GitHub

Spark用のSnowflakeコネクターのソースコードは GitHub で入手できます。ただし、コンパイルされたパッケージは GitHub では入手できません。コンパイルされたパッケージは、 Maven からダウンロードできます。

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

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

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

使用しているSnowflake SparkコネクタのバージョンでサポートされているSnowflake JDBC ドライバーのバージョンを見つけるには、 Snowflake Connector for Spark リリースノート をご参照ください。

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

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

Sparkパッケージ署名用Snowflakeコネクタを確認するには、

  1. 公開キーサーバーから、使用しているSpark用SnowflakeコネクタのバージョンのSnowflake GPG 公開キーをダウンロードしてインポートします。

    • バージョン3.1.2以上の場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 2A3149C82551A34A
    • バージョン3.1.0から3.1.1までの場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
    • バージョン2.11.1から3.0.0までの場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
    • バージョン2.8.2から2.11.0までの場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
    • バージョン2.4.13から2.8.1までの場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
    • バージョン2.4.12以下の場合:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A

    注釈

    このコマンドが次のエラーを発生して失敗した場合、

    gpg: keyserver receive failed: Server indicated a failure
    
    Copy

    次に、キーサーバーにポート80を使用することを指定します。

    gpg --keyserver hkp://keyserver.ubuntu.com:80  ...
    
    Copy
  2. gpg --verify コマンドを実行して、パッケージの署名を確認します。

    --verify コマンドラインフラグには、署名ファイルとして 以前にダウンロード した .asc ファイルを指定し、署名済みデータを含むファイルとして JAR ファイルを指定します。

    $ gpg --verify spark-snowflake_x.xx-N.N.N-spark_P.P.jar.asc spark-snowflake_x.xx-N.N.N-spark_P.P.jar
    gpg: Signature made Wed 22 Feb 2017 04:31:58 PM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg\ @snowflake.net>"
    
    Copy

    条件:

    • x.xx は、Scalaバージョン(例: 2.12)。

    • N.N.N はSpark用Snowflake Connectorのバージョン(例: 2.16.0)。

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

    注釈

    署名の検証により、次のような警告が生成されます。

    gpg: Signature made Mon 24 Sep 2018 03:03:45 AM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>" unknown
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg: There is no indication that the signature belongs to the owner.
    
    Copy

    警告を回避するために、Snowflake GPG 公開キーの暗黙的な信頼を付与できます。

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

    $ gpg --delete-key "Snowflake Computing"
    
    Copy

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

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

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

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

例:

spark-shell --packages net.snowflake:snowflake-jdbc:3.13.22,net.snowflake:spark-snowflake_2.12:2.16.0-spark_3.4
Copy

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

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
Copy

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

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の認証」をご参照ください。