Exécuter des charges de travail Spark à partir d’un client tiers

Vous pouvez exécuter des charges de travail Spark de manière interactive à partir de Jupyter Notebooks, VS Code, ou toute interface basée sur Python sans avoir besoin de gérer un cluster Spark. Les charges de travail s’exécutent sur l’infrastructure Snowflake.

Par exemple, vous pouvez effectuer les tâches suivantes :

  1. Confirmer que vous avez des conditions préalables.

  2. Configurer votre environnement pour vous connecter avec Snowpark Connect for Spark sur Snowflake.

  3. Installez Snowpark Connect for Spark.

  4. Exécuter le code PySpark depuis votre client pour l’exécuter sur Snowflake.

Conditions préalables

Vérifiez que vos installations Python et Java sont basées sur la même architecture informatique. Par exemple, si Python est basé sur arm64, Java doit également être basé sur arm64 (et non x86_64, par exemple).

Configurer votre environnement

Vous pouvez configurer votre environnement de développement en veillant à ce que le code puisse se connecter à Snowpark Connect for Spark sur Snowflake. Pour se connecter à Snowflake, le code client utilisera un fichier .toml contenant les détails de la connexion.

Si Snowflake CLI est installée, vous pouvez l’utiliser pour définir une connexion. Sinon, vous pouvez écrire manuellement les paramètres de connexion dans un fichier config.toml.

Ajouter une connexion en utilisant Snowflake CLI

Vous pouvez utiliser Snowflake CLI pour ajouter des propriétés de connexion que Snowpark Connect for Spark peut utiliser pour se connecter à Snowflake. Vos modifications sont enregistrées dans un fichier config.toml.

  1. Exécutez la commande suivante pour ajouter une connexion à l’aide de la commande :command: add snow connection.

    snow connection add
    
    Copy
  2. Suivez les invites pour définir une connexion.

    Veillez à spécifier spark-connect comme nom de connexion.

    Cette commande ajoute une connexion à votre fichier config.toml, comme dans l’exemple suivant :

    [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. Exécutez la commande suivante pour confirmer que la connexion fonctionne.

    Vous pouvez tester la connexion de cette manière lorsque vous l’avez ajoutée en utilisant Snowflake CLI.

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

Ajouter une connexion en écrivant manuellement un fichier de connexion

Vous pouvez écrire ou mettre à jour manuellement un fichier connections.toml afin que votre code puisse se connecter à Snowpark Connect for Spark sur Snowflake.

  1. Exécutez la commande suivante pour vous assurer que votre fichier connections.toml autorise uniquement au propriétaire (utilisateur) d’avoir un accès en lecture et en écriture.

    chmod 0600 "~/.snowflake/connections.toml"
    
    Copy
  2. Modifiez le fichier connections.toml afin qu’il contienne une connexion [spark-connect] avec les propriétés de connexion dans l’exemple suivant.

    Veillez à remplacer les valeurs par vos propres spécificités de connexion.

    [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

Installer Snowpark Connect for Spark

Vous pouvez installer Snowpark Connect for Spark en tant que paquet Python.

  1. Créez un environnement virtuel Python.

    Par exemple, vous pouvez utiliser Conda, comme dans l’exemple suivant.

    conda create -n xxxx pip python=3.12
    conda activate xxxx
    
    Copy
  2. Installez le paquet Snowpark Connect for Spark.

    pip install --upgrade --force-reinstall snowpark-connect
    
    Copy
  3. Ajoutez du code Python pour démarrer un serveur Snowpark Connect for Spark et créez une session Snowpark Connect for Spark.

    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

Exécuter le code PySpark de votre client

Une fois que vous disposez d’une connexion authentifiée, vous pouvez écrire le code PySpark comme vous le feriez normalement.

Par exemple, vous pouvez exécuter l’exemple simple suivant :

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

Résoudre les problèmes d’installation Snowpark Connect for Spark

La liste de vérifications suivante vous permettra de résoudre les problèmes d’installation et d’utilisation de Snowpark Connect.

  • Assurez-vous que Java et Python sont basés sur la même architecture.

  • Utilisez le fichier de paquet Snowpark Connect le plus récent, comme décrit dans Installer Snowpark Connect for Spark.

  • Confirmez que la commande Python avec le code PySpark fonctionne correctement pour l’exécution locale, c’est-à-dire sans connexion Snowflake.

    Par exemple, exécutez une commande telle que la suivante :

    python your_pyspark_file.py
    
    Copy