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. Le REPL peut être démarré en exécutant :
pyspark
Lorsqu’il est démarré sans paramètre supplémentaire, il récupère les informations d’identification par défaut de l’environnement (par exemple, les variables d’environnement DATABRICKS_
ou le profil de configuration DEFAULT
) pour se connecter au cluster Azure Databricks.
Une fois le REPL démarré, l’objet spark
est disponible et configuré pour exécuter des commandes Apache Spark sur le cluster Databricks.
>>> spark.range(3).show()
+---+
| id|
+---+
| 0|
| 1|
| 2|
+---+
Le REPL peut être configuré pour se connecter à un autre distant en configurant le paramètre --remote
avec une chaîne de connexion Spark Connect.
pyspark --remote "sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>"
Pour arrêter l’interpréteur de commandes, appuyez sur Ctrl + d
ou sur 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.