Exécuter des charges de travail Spark à partir de Snowflake Notebooks

Vous pouvez exécuter des charges de travail Spark de manière interactive à partir de Snowflake Notebooks sans avoir besoin de gérer un cluster Spark. Les charges de travail s’exécutent sur l’infrastructure Snowflake.

Pour utiliser Snowflake Notebooks en tant que client afin de développer des charges de travail Spark à exécuter sur Snowflake :

  1. Lancez Snowflake Notebooks

  2. Dans le notebook, démarrez une session Spark.

  3. Écrivez le code PySpark pour charger, transformer et analyser des données, par exemple pour filtrer les commandes client à forte valeur ajoutée ou agréger les revenus.

Utiliser un notebook Snowflake qui fonctionne sur un entrepôt

Pour plus d’informations sur Snowflake Notebooks, voir Créer un notebook.

  1. Créez un notebook Snowflake en procédant comme suit :

    1. Connectez-vous à Snowsight.

    2. En haut du menu de navigation, sélectionnez Ajout d'une vignette de tableau de bord Create » Notebook » New Notebook.

    3. Dans la boîte de dialogue Create notebook, saisissez un nom, une base de données et un schéma pour le nouveau notebook.

      Pour plus d’informations, voir Créer un notebook.

    4. Pour Runtime, sélectionnez Run on warehouse.

    5. Pour Runtime version, sélectionnez Snowflake Warehouse Runtime 2.0.

      Lorsque vous sélectionnez la version 2.0, vous vous assurez que vous disposez de la prise en charge des dépendances dont vous avez besoin, y compris Python 3.10. Pour plus d’informations, voir Exécutions des notebooks.

    6. Pour Query warehouse et Notebook warehouse, sélectionnez des entrepôts pour l’exécution du code de requête, du noyau et du code Python, comme décrit dans Créer un notebook.

    7. Sélectionnez Create.

    8. Dans le notebook que vous avez créé, sous Packages, assurez-vous d’avoir les paquets suivants répertoriés pour prendre en charge le code dans votre notebook :

      • Python version 3.10 ou ultérieure.

      • snowpark-connect, dernière version

        Si vous devez ajouter ces paquets, procédez comme suit :

        1. Sous Anaconda Packages, saisissez le nom du paquet dans le champ de recherche.

        2. Sélectionnez le nom du paquet.

        3. Sélectionnez Save.

  2. Pour vous connecter au serveur Snowpark Connect for Spark et tester la connexion, copiez le code suivant et collez-le dans la cellule Python du notebook que vous avez créé :

    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 in Workspaces.

  1. Créez une intégration d’accès externe PyPI.

    Vous devez utiliser le rôle ACCOUNTADMIN et disposer d’une base de données à laquelle vous pouvez accéder.

    Exécutez les commandes suivantes à partir d’un fichier SQL dans un espace de travail.

    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. Activez l’intégration PyPI dans un notebook.

    1. Dans le notebook, pour Service name, sélectionnez un service.

    2. Pour External access integrations, sélectionnez l’intégration PyPI que vous avez créée.

    3. For Python version, select Python 3.11.

    4. Sélectionnez Create.

  3. Installez le paquet snowpark_connect de PyPI dans le notebook, en utilisant un code tel que :

    pip install snowpark-connect[jdk]
    
    Copy
  4. Redémarrez le noyau.

    • À partir du bouton Connect, sélectionnez Restart kernel.

  5. Démarrez le serveur snowpark_connect en utilisant un code tel que :

    import snowflake.snowpark_connect
    
    spark = snowflake.snowpark_connect.server.init_spark_session()
    
    Copy
  6. Exécutez votre code Spark, comme indiqué dans l’exemple suivant :

    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