Dépannage de Databricks Connect pour Python
Cet article couvre Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.
Cet article fournit des informations de dépannage pour Databricks Connect pour Python. Databricks Connect vous permet de connecter des IDEs, des serveurs Notebook et des applications personnalisées aux clusters Databricks. See Databricks Connect. Pour la version Scala de cet article, voir Résolution des problèmes de Databricks Connect pour Scala.
Erreur : StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, échec de la résolution DNS ou réception d’un en-tête http2 avec le statut 500
Problème : Lorsque vous essayez d'exécuter du code avec Databricks Connect, vous obtenez des messages d'erreur qui contiennent des chaînes telles que StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failed ou Received http2 header with status: 500.
Cause possible : Databricks Connect ne peut pas atteindre votre cluster.
Solutions recommandées :
- Vérifiez que le nom de votre instance Workspace est correct. Si vous utilisez des variables d'environnement, vérifiez que la variable d'environnement associée est disponible et correcte sur votre machine de développement locale.
- Vérifiez que l'ID de votre cluster est correct. Si vous utilisez des variables d'environnement, vérifiez que la variable d'environnement associée est disponible et correcte sur votre machine de développement locale.
- Vérifiez que votre cluster dispose de la version personnalisée de cluster correcte compatible avec Databricks Connect.
Incompatibilité de version Python
Vérifiez que la version de Python que vous utilisez localement a au moins la même version mineure que la version sur le cluster (par exemple, 3.10.11 contre 3.10.10, c'est OK, 3.10 contre 3.9, ce n'est pas le cas). Pour les versions prises en charge, consultez la matrice de support de version.
Si vous avez plusieurs versions de Python installées localement, assurez-vous que Databricks Connect utilise la bonne en définissant la variable d'environnement PYSPARK_PYTHON (par exemple, PYSPARK_PYTHON=python3).
Installations PySpark en conflit
Le package databricks-connect est en conflit avec PySpark. Le fait d'avoir les deux installés provoquera des erreurs lors de l'initialisation du contexte Spark en Python. Cela peut se manifester de plusieurs manières, y compris par des erreurs « Stream corrupted » ou « classe introuvable ». Si vous avez pyspark installé dans votre environnement Python, assurez-vous qu'il est désinstallé avant d'installer databricks-connect. Après la désinstallation de PySpark, assurez-vous de réinstaller complètement le package Databricks Connect :
pip3 uninstall pyspark
pip3 uninstall databricks-connect
pip3 install --upgrade "databricks-connect==14.0.*" # or X.Y.* to match your specific cluster version.
Databricks Connect et PySpark sont mutuellement exclusifs, mais il est possible d'utiliser des environnements virtuels Python pour le développement à distance avec databricks-connect dans votre IDE et les tests locaux avec pyspark dans un terminal. Cependant, Databricks vous recommande d'utiliser Databricks Connect pour Python avec le calcul serverless pour tous les tests, pour les raisons suivantes :
- Databricks Runtime, et donc
databricks-connect, contient des fonctionnalités qui ne sont pas disponibles dans l'OSSpyspark. - Les tests avec
databricks-connectet Serverless sont plus rapides que les tests utilisantpysparken local. - Les intégrations Unity Catalog ne sont pas disponibles dans
pyspark, de sorte qu'aucune autorisation ne sera appliquée lorsque vous effectuerez des tests en utilisantpysparklocalement. - Pour les tests de bout en bout avec une dépendance externe telle que le compute Databricks, les tests d'intégration, par opposition aux tests unitaires, sont les meilleurs.
Si vous choisissez toujours de vous connecter à un cluster Spark local, vous pouvez spécifier une chaîne de connexion en utilisant ce qui suit :
connection_string = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()
Erreurs de connexion au serveur Apache Spark
Databricks Connect est conçu à partir de Databricks Runtime, qui a des dépendances différentes de l’Apache Spark open source. Tentative de connexion à un serveur Apache Spark open source (par exemple, un Apache Spark 3.5.x exécuté localement serveur Spark Connect à sc://localhost), entraîne des erreurs telles que classe introuvable, incohérences de comportement de l'API, ou échecs de sérialisation. En particulier, Databricks Connect 15.4 et 16.4 sont incompatibles avec Apache Spark 3.5.x car ils utilisent une version différente de la bibliothèque json4s.
Utilisez un cluster Databricks ou un compute Serverless au lieu d'un serveur Apache Spark open source. Voir Compute configuration pour Databricks Connect.
Entrée PATH en conflit ou manquante pour les binaires
Il est possible que votre PATH soit configuré de telle sorte que des commandes comme spark-shell exécutent un autre binaire précédemment installé au lieu de celui fourni avec Databricks Connect. Vous devez vous assurer que les binaires Databricks Connect ont la priorité, ou que vous supprimez ceux installés précédemment.
Si vous ne pouvez pas exécuter des commandes comme spark-shell, il est également possible que votre PATH n’ait pas été configuré automatiquement par pip3 install, et vous devrez ajouter manuellement le répertoire d’installation bin à votre PATH. Il est possible d'utiliser Databricks Connect avec des IDEs même si cela n'est pas configuré.
La syntaxe du nom de fichier, du nom de répertoire ou de l'étiquette de volume est incorrecte sur Windows
Si vous utilisez Databricks Connect sur Windows et que vous voyez :
The filename, directory name, or volume label syntax is incorrect.
Databricks Connect a été installé dans un répertoire avec un espace dans votre chemin d'accès. Vous pouvez contourner ce problème en l'installant dans un chemin de répertoire sans espaces, ou en configurant votre chemin d'accès à l'aide du formulaire de nom court.