Utilisation avancée de Databricks Connect
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.
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.
- Python
- Scala
Pour définir la chaîne de connexion à l’aide de la fonction 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 é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 :
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
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 :
import com.databricks.connect.DatabricksSession
val 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.
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.
-
start un serveur Spark Connect local. Voir Comment utiliser Spark Connect
-
Configurer Databricks Connect. Définissez la variable d’environnement
SPARK_REMOTEpour qu’elle pointe vers votre serveur Spark Connect local. Voir connexion à Spark Connect à l’aide de clients.export SPARK_REMOTE="sc://localhost" -
Initialisez la session Databricks :
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val 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
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
import com.databricks.connect.DatabricksSession
val 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.
- Python
- Scala
L’exemple suivant définit cette variable d’environnement :
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.
Java et Scala n'offrent pas de moyens de configurer des variables d'environnement par programmation. Référez-vous à la documentation de votre système d'exploitation ou de votre IDE pour obtenir des informations sur la façon de les configurer dans le cadre de votre application.
Journalisation et Logs de débogage
- Python
- Scala
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à.
Databricks Connect pour Scala utilise la journalisation SLF4J et n'est pas fourni avec des fournisseurs SLF4J.
Les applications utilisant Databricks Connect doivent inclure un fournisseur SLF4J et, dans certains cas, être configurées pour imprimer les messages de journalisation.
- L'option la plus simple est d'inclure le fournisseur slf4j-simple qui imprime les messages de Logs au niveau
INFOet supérieur vers le Stream d'erreur standard ( stderr ). - Une alternative plus configurable consiste à utiliser le fournisseur slf4j-reload4j qui récupère la configuration d'un fichier
log4j.propertiesdans le chemin de classe.
L’exemple suivant montre un fichier log4j.properties simple.
log4j.rootLogger=INFO,stderr
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n
Dans l’exemple précédent, les Logs de débogage sont affichés si l’enregistreur racine (ou un enregistreur spécifique) est configuré au niveau DEBUG :
log4j.rootLogger=DEBUG,stderr