Snowflake NotebooksからSparkワークロードを実行

Sparkクラスターを管理することなく、Snowflake NotebooksからSparkワークロードをインタラクティブに実行できます。ワークロードはSnowflakeインフラストラクチャ上で実行されます。

Snowflake上で実行するSparkワークロードを開発するために、Snowflake Notebooksをクライアントとして使用するには:

  1. Snowflake Notebooksの使用

  2. ノートブック内で、Sparkセッションを開始します。

  3. 価値の高い顧客の注文をフィルタリングしたり、収益を集計したりするなど、データをロード、変換、分析するために、 PySpark コードを書き込みます。

ウェアハウス上で動作するSnowflake Notebookを使用する

Snowflake Notebooksの詳細については、 ノートブックを作成する をご参照ください。

  1. 次の手順を実行して、Snowflake Notebooksを作成します。

    1. Snowsight にサインインします。

    2. ナビゲーションメニューの上部で、ダッシュボードタイルを追加するCreate)|raa| Notebook » New Notebook を選択します。

    3. Create notebook ダイアログで、新しいノートブックの名前、データベース、スキーマを入力します。

      詳細については、 ノートブックを作成する をご参照ください。

    4. Runtime には、 Run on warehouse を選択します。

    5. Runtime version には、 Snowflake Warehouse Runtime 2.0 を選択します。

      バージョン2.0を選択すると、 Python 3.10など、必要な依存関係のサポートがあることを確認できます。詳細については、 Notebookランタイム をご参照ください。

    6. ノートブックを作成する で説明されているように、Query warehouse および :ui:`Notebook warehouse`で、クエリコードとカーネルとPythonコードを実行するウェアハウスを選択します。

    7. Create を選択します。

    8. 作成したノートブックの :ui:`Packages`内に、ノートブックでコードをサポートするため以下のパッケージがリストされていることを確認してください。

      • Pythonバージョン3.10以降。

      • snowpark-connect、最新バージョン

        これらのパッケージを追加する必要がある場合は、以下のステップを実行します。

        1. :ui:`Anaconda Packages`で、検索ボックスにパッケージ名を入力します。

        2. パッケージ名を選択します。

        3. Save を選択します。

  2. Snowpark Connect for Spark サーバーに接続してテストするには、以下のコードをコピーして、作成したノートブックのPythonセルに貼り付けます。

    from snowflake import snowpark_connect
    
    spark = snowpark_connect.server.init_spark_session()
    df = spark.sql("show schemas").limit(10)
    df.show()
    
    Copy

Use a Snowflake Notebook that runs in a workspace

For more information about Snowflake Notebooks in Workspaces, see ワークスペースのSnowflake Notebooks.

  1. PyPI 外部アクセス統合を作成します。

    ACCOUNTADMIN ロールを使い、アクセスできるデータベースを持っている必要があります。

    ワークスペース内の SQL ファイルから次のコマンドを実行します。

    USE DATABASE mydb;
    USE ROLE accountadmin;
    
    CREATE OR REPLACE NETWORK RULE pypi_network_rule
    MODE = EGRESS
    TYPE = HOST_PORT
    VALUE_LIST = ('pypi.org', 'pypi.python.org', 'pythonhosted.org', 'files.pythonhosted.org');
    
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION pypi_access_integration
    ALLOWED_NETWORK_RULES = (pypi_network_rule)
    ENABLED = true;
    
    Copy
  2. ノートブックでの PyPI 統合を有効にします。

    1. ノートブックの Service name で、サービスを選択します。

    2. External access integrations の場合は、作成した PyPI 統合を選択します。

    3. For Python version, select Python 3.11.

    4. Create を選択します。

  3. 次のようなコードを使用して、ノートブックに PyPI から snowpark_connect パッケージをインストールします。

    pip install snowpark-connect[jdk]
    
    Copy
  4. Kernelを再起動します。

    • Connect ボタンから、 Restart kernel を選択します。

  5. 次のようなコードを使用して snowpark_connect サーバーを開始します。

    import snowflake.snowpark_connect
    
    spark = snowflake.snowpark_connect.server.init_spark_session()
    
    Copy
  6. 次の例に示すように、Sparkコードを実行します。

    from pyspark.sql.connect.functions import *
    from pyspark.sql.connect.types import *
    from pyspark.sql import Row
    
    # Sample nested data
    data = [(1, ("Alice", 30))]
    schema = "id INT, info STRUCT<name:STRING, age:INT>"
    
    df = spark.createDataFrame(data, schema=schema)
    df.show()
    
    spark.sql("show databases").show()
    
    Copy