Aller au contenu principal

Utilisation avancée de Databricks Connect

remarque

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

Cet article décrit des sujets qui vont au-delà de la configuration de base de Databricks Connect.

Configurez la chaîne de connexion Spark Connect

En plus de vous connecter à votre cluster en utilisant les options décrites dans Configurer une connexion à un cluster, une option plus avancée consiste à se connecter en utilisant la chaîne de connexion Spark Connect. Vous pouvez passer la chaîne dans la fonction remote ou définir la variable d'environnement SPARK_REMOTE.

remarque

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

Pour définir la chaîne de connexion à l’aide de la fonction remote :

Python
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 également définir la variable d'environnement SPARK_REMOTE :

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

Ensuite, initialisez la classe DatabricksSession :

Python
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Utiliser le serveur Spark Connect avec Databricks Connect

Vous pouvez éventuellement exécuter Databricks Connect avec un serveur Spark Connect open source.

important

Certaines fonctionnalités disponibles dans Databricks Runtime et Databricks Connect sont exclusives à Databricks ou pas encore publiées dans Apache Spark open source. Si votre code dépend de ces fonctionnalités, les étapes suivantes peuvent échouer avec des erreurs.

  1. start un serveur Spark Connect local. Voir Comment utiliser Spark Connect

  2. Configurer Databricks Connect. Définissez la variable d’environnement SPARK_REMOTE pour qu’elle pointe vers votre serveur Spark Connect local. Voir connexion à Spark Connect à l’aide de clients.

    export SPARK_REMOTE="sc://localhost"
  3. Initialisez la session Databricks :

Python
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

En-têtes HTTP supplémentaires

Databricks Connect communique avec les clusters Databricks via gRPC sur HTTP/2.

Pour un meilleur contrôle sur les requêtes provenant des clients, les utilisateurs avancés peuvent choisir d'installer un service proxy entre le client et le cluster Databricks. Dans certains cas, les proxys peuvent nécessiter des en-têtes personnalisés dans les requêtes HTTP.

Utilisez la méthode header() pour ajouter des en-têtes personnalisés aux requêtes HTTP :

Python
from databricks.connect import DatabricksSession

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

Certificats

Si votre cluster s'appuie sur un certificat SSL/TLS personnalisé pour résoudre un nom de domaine complet (FQDN) de Databricks Workspace, vous devez définir la variable d'environnement GRPC_DEFAULT_SSL_ROOTS_FILE_PATH sur votre machine de développement locale. Cette variable d'environnement doit être définie sur le chemin d'accès complet au certificat installé sur le cluster.

L’exemple suivant définit cette variable d’environnement :

Python
import os

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

Pour d'autres façons de définir les variables d'environnement, consultez la documentation de votre système d'exploitation.

Journalisation et Logs de débogage

Databricks Connect pour Python produit des logs en utilisant le logging Python standard.

Les Logs sont émis vers le Stream d'erreur standard ( stderr ) et ils sont désactivés par default. Le réglage d'une variable d'environnement SPARK_CONNECT_LOG_LEVEL=debug modifiera ce default et affichera tous les messages de log au niveau DEBUG et au-delà.