サードパーティクライアントからSparkワークロードを実行

Jupyterノートブック、 VS コード、またはPythonベースのインターフェースからSparkワークロードをインタラクティブに実行できます。Sparkクラスターを管理する必要はありません。ワークロードはSnowflakeインフラストラクチャ上で実行されます。

たとえば、次のタスクを実行できます。

  1. 前提条件があることを確認します。

  2. Snowflake上の Snowpark Connect for Spark と接続するための環境を設定します。

  3. Snowpark Connect for Spark をインストールします。

  4. Snowflakeで実行するクライアントからの PySpark コードを実行します。

前提条件

PythonとJavaのインストールが同じコンピューターアーキテクチャに基づいていることを確認します。たとえば、 Pythonが arm64 に基づいている場合、Java も arm64 である必要があります(例:x86_64ではない)。

環境の設定

コードがSnowflake上の Snowpark Connect for Spark に接続できるようにすることで、開発環境をセットアップできます。Snowflakeクライアントコードに接続するには、接続の詳細を含む .toml ファイルを使用します。

Snowflake CLI がインストールされている場合、それを使用して接続を定義できます。それ以外の場合は、 config.toml ファイルに接続パラメーターを手動で書き込むことができます。

Snowflake CLI を使用して接続を追加します。

Snowpark Connect for Spark がSnowflakeに接続するために使える接続プロパティを追加するために、 Snowflake CLI を使用できます。変更は config.toml ファイルに保存されます。

  1. snow connection コマンドを使用して接続を追加するには、次のコマンドを実行します:追加 コマンド

    snow connection add
    
    Copy
  2. プロンプトに従って接続を定義します。

    必ず接続名に spark-connect を指定してください。

    このコマンドは次の例のように、 config.toml ファイルに接続を追加します。

    [connections.spark-connect]
    host = "example.snowflakecomputing.com"
    port = 443
    account = "example"
    user = "test_example"
    password = "password"
    protocol = "https"
    warehouse = "example_wh"
    database = "example_db"
    schema = "public"
    
    Copy
  3. 以下のコマンドを実行して、接続が機能することを確認します。

    Snowflake CLI を使用して接続を追加した場合は、この方法でテストできます。

    snow connection list
    snow connection test --connection spark-connect
    
    Copy

接続ファイルを手動で書き込んで接続を追加する

Snowflake上でコードが Snowpark Connect for Spark に接続できるように、 connections.toml ファイルを手動で記述または更新できます。

  1. 次のコマンドを実行して、 connections.toml ファイルでは、所有者(ユーザー)のみが読み取りおよび書き込みアクセスできることを確認します。

    chmod 0600 "~/.snowflake/connections.toml"
    
    Copy
  2. 次の例の接続プロパティを使用した [spark-connect] 接続が含まれるように、connections.toml ファイルを編集します。

    値を独自の接続仕様に置き換えてください。

    [spark-connect]
    host="my_snowflake_account.snowflakecomputing.com"
    account="my_snowflake_account"
    user="my_user"
    password="&&&&&&&&"
    warehouse="my_wh"
    database="my_db"
    schema="public"
    
    Copy

Snowpark Connect for Spark をインストールする

Pythonパッケージとして Snowpark Connect for Spark をインストールできます。

  1. Pythonの仮想環境を作成します。

    たとえば、次の例のようにCondaを使用できます。

    conda create -n xxxx pip python=3.12
    conda activate xxxx
    
    Copy
  2. Snowpark Connect for Spark パッケージをインストールします。

    pip install --upgrade --force-reinstall snowpark-connect
    
    Copy
  3. Snowpark Connect for Spark サーバーを開始して Snowpark Connect for Spark セッションを作成するには、Pythonコードを追加します。

    import os
    import snowflake.snowpark
    from snowflake import snowpark_connect
    # Import snowpark_connect before importing pyspark libraries
    from pyspark.sql.types import Row
    
    os.environ["SPARK_CONNECT_MODE_ENABLED"] = "1"
    snowpark_connect.start_session()  # Start the local |spconnect| session
    spark = snowpark_connect.get_session()
    
    Copy

クライアントからの PySpark コードを実行する

認証済みの接続が確立されると、通常と同様に PySpark コードを書き込みできます。

例えば、次の簡単な例を実行できます。

from pyspark.sql import Row

  df = spark.createDataFrame([
      Row(a=1, b=2.),
      Row(a=2, b=3.),
      Row(a=4, b=5.),])

  print(df.count())
Copy

トラブルシューティング Snowpark Connect for Spark インストール

次のチェックリストを使用して、Snowpark Connectのインストールと使用のトラブルシューティングを行うことができます。

  • JavaおよびPythonが :ref:` 同じアーキテクチャに基づく <label-snowpark_connect_jupyter_prereq>` ことを確認します。

  • Snowpark Connect for Spark をインストールする で説明されているように、最新のSnowpark Connectパッケージファイルを使用します。

  • PySpark コードを使用した Python コマンドが、ローカル実行に対して正しく動作すること、つまり、Snowflakeへの接続なしで実行されることを確認します。

    たとえば、次のようなコマンドを実行します。

    python your_pyspark_file.py
    
    Copy