Partager via


Utilisation avancée de Databricks Connect pour Python

Remarque

Cet article traite de Databricks Connect pour Databricks Runtime 14.0 et versions ultérieures.

Cet article décrit les rubriques qui dépassent la configuration de base de Databricks Connect.

Configurer la chaîne de connexion Spark Connect

Outre la connexion à votre cluster à l’aide des options décrites dans la section Configurer une connexion à un cluster, une option plus avancée consiste à se connecter à l’aide de la chaîne de connexion Spark Connect. Vous pouvez transmettre la chaîne dans la fonction remote ou définir la variable d’environnement SPARK_REMOTE.

Remarque

Vous ne pouvez utiliser qu’une authentification par jeton d’accès personnel Databricks pour vous connecter à l’aide de la chaîne de connexion Spark Connect.

Pour obtenir la chaîne de connexion en utilisant la fonction remote :

# Set the Spark Connect connection string in DatabricksSession.builder.remote.
from databricks.connect import DatabricksSession

workspace_instance_name = retrieve_workspace_instance_name()
token                   = retrieve_token()
cluster_id              = retrieve_cluster_id()

spark = DatabricksSession.builder.remote(
   f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()

Vous pouvez aussi définir la variable d’environnement SPARK_REMOTE :

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Puis initialisez la classe DatabricksSession comme suit :

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Interpréteur de commandes PySpark

Databricks Connect pour Python est fourni avec un fichier binaire pyspark qui est un REPL PySpark (interpréteur de commandes Spark) configuré pour utiliser Databricks Connect.

Lorsque vous avez démarré sans paramètres supplémentaires, l’interpréteur de commandes récupère les informations d’identification par défaut de l’environnement (par exemple, les DATABRICKS_ variables d’environnement ou le DEFAULT profil de configuration) pour vous connecter au cluster Azure Databricks. Pour plus d’informations sur la configuration d’une connexion, consultez Configuration de calcul pour Databricks Connect.

  1. Pour démarrer l’interpréteur de commandes Spark et le connecter à votre cluster en cours d’exécution, exécutez l’une des commandes suivantes à partir de votre environnement virtuel Python activé :

    pyspark
    

    L’interpréteur de commandes Spark s’affiche, par exemple :

    Python 3.10 ...
    [Clang ...] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    Welcome to
         ____              __
        / __/__  ___ _____/ /__
       _\ \/ _ \/ _ `/ __/  '_/
      /__ / .__/\_,_/_/ /_/\_\   version 13.x.dev0
         /_/
    
    Using Python version 3.10 ...
    Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=...
    SparkSession available as 'spark'.
    >>>
    

    Une fois l’interpréteur de commandes démarré, l’objet spark est disponible pour exécuter des commandes Apache Spark sur le cluster Databricks. Exécutez une commande PySpark simple, telle que spark.range(1,10).show(). S’il n’y a pas d’erreur, vous vous êtes connecté.

  2. Pour plus d’informations sur l’utilisation de l’interpréteur de commandes Spark avec Python pour exécuter les commandes sur votre calcul, consultez la section Analyse interactive avec l’interpréteur de commandes Spark.

    Utilisez la variable spark intégrée pour représenter SparkSession sur votre cluster en cours d’exécution, par exemple :

    >>> df = spark.read.table("samples.nyctaxi.trips")
    >>> df.show(5)
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    | 2016-02-14 16:52:13|  2016-02-14 17:16:04|         4.94|       19.0|     10282|      10171|
    | 2016-02-04 18:44:19|  2016-02-04 18:46:00|         0.28|        3.5|     10110|      10110|
    | 2016-02-17 17:13:57|  2016-02-17 17:17:55|          0.7|        5.0|     10103|      10023|
    | 2016-02-18 10:36:07|  2016-02-18 10:41:45|          0.8|        6.0|     10022|      10017|
    | 2016-02-22 14:14:41|  2016-02-22 14:31:52|         4.51|       17.0|     10110|      10282|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    only showing top 5 rows
    

    Tout le code Python s'exécute localement, tandis que tout le code PySpark impliquant des opérations DataFrame s'exécute sur le cluster dans l'espace de travail Azure Databricks distant et les réponses d'exécution sont renvoyées à l'appelant local.

  3. Pour arrêter l’interpréteur de commandes Spark, appuyez sur Ctrl + d ou Ctrl + z, ou exécutez la commande quit() ou exit().

En-têtes HTTP supplémentaires

Databricks Connect communique avec les clusters Databricks au moyen gRPC par HTTP/2.

Certains utilisateurs avancés peuvent choisir d’installer un service proxy entre le client et le cluster Azure Databricks afin de mieux contrôler les requêtes provenant de leurs clients.

Dans certains cas, les proxys peuvent nécessiter des en-têtes personnalisés dans les requêtes HTTP.

La méthode headers() peut être utilisée pour ajouter des en-têtes personnalisés à leurs requêtes HTTP.

spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()

Certificats

Si votre cluster s’appuie sur un certificat de protocole SSL/TLS personnalisé pour résoudre le nom de domaine complet (FQDN) d’un espace de travail Azure Databricks, vous devez définir la variable d’environnement GRPC_DEFAULT_SSL_ROOTS_FILE_PATH sur votre machine de développement locale. Vous devez définir cette variable d’environnement sur le chemin d’accès complet au certificat installé sur le cluster.

Par exemple, vous définissez cette variable d’environnement dans du code Python comme suit :

import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Pour découvrir d’autres moyens permettant de définir des variables d’environnement, consultez la documentation de votre système d’exploitation.

Journalisation et journaux de débogage

Databricks Connect pour Python produit des journaux à l’aide de la journalisation Python standard.

Les journaux d’activité sont émis vers le flux d’erreur standard (stderr) et, par défaut, ils ne sont que les journaux d’activité de niveau WARN, avec des versions supérieures émises.

La définition d’une variable d’environnement SPARK_CONNECT_LOG_LEVEL=debug modifie cette valeur par défaut et imprime tous les messages de journal au niveau DEBUG et supérieur.