Résolution des problèmes de Databricks Connect pour Python

Remarque

Cet article présente Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.

Cet article fournit des informations de résolution des problèmes pour Databricks Connect pour Python. Databricks Connect vous permet de connecter des IDE populaires, des serveurs de notebooks et des applications personnalisées aux clusters Azure Databricks. Consultez Databricks Connect. Pour accéder à la version Scala de cet article, consultez Résolution des problèmes de Databricks Connect pour Scala.

Erreur : StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, échec de la résolution DNS ou en-tête http2 reçu avec l’état 500

Problème : Quand vous essayez d’exécuter du code avec Databricks Connect, vous obtenez des messages d’erreur qui contiennent des chaînes de type StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failed ou Received http2 header with status: 500.

Cause possible : Databricks Connect ne peut pas accéder à votre cluster.

Solutions recommandées :

  • Vérifiez que le nom de l’instance de votre espace de travail 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 ID de 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 a la version de cluster personnalisée appropriée compatible avec Databricks Connect.

incompatibilité de version Python

Vérifiez que la version Python que vous utilisez localement a au moins la même version mineure que la version du cluster (par exemple, 3.10.11 par rapport à 3.10.10 est OK, 3.10 et 3.9 n’est pas). Pour connaître les versions prises en charge, consultez la matrice de prise en charge des versions.

Si plusieurs versions Python sont installées localement, assurez-vous que Databricks Connect utilise la bonne version 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. L’installation des deux entraîne des erreurs lors de l’initialisation du contexte Spark dans Python. Cela peut se manifester de plusieurs façons, notamment des erreurs de « flux endommagé » ou de « classe introuvable ». Si vous avez installé pyspark dans votre environnement Python, vérifiez qu’il est désinstallé avant d’installer databricks-connect. Après la désinstallation de PySpark, veillez à réinstaller entièrement 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 s’excluent mutuellement, mais il est possible d’utiliser Python environnements virtuels pour effectuer un développement à distance avec databricks-connect dans votre IDE et les tests locaux avec pyspark dans un terminal. Toutefois, Databricks recommande d’utiliser Databricks Connect pour Python avec calcul sans serveur pour toutes les raisons suivantes :

  • Databricks Runtime, et donc databricks-connect, contient des fonctionnalités qui ne sont pas disponibles dans le système d’exploitation pyspark.
  • Le test avec databricks-connect et serverless est plus rapide que le test à l’aide pyspark localement.
  • Les intégrations de catalogue Unity ne sont pas disponibles dans pyspark. Par conséquent, aucune autorisation n’est appliquée lorsque vous testez l’utilisation pyspark locale.
  • Pour les tests de bout en bout avec une dépendance externe telle que le calcul 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 un connection string à l’aide des éléments suivants :

connection_string = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()

Entrée PATH manquante ou en conflit pour les fichiers binaires

Il est possible que votre valeur de chemin PATH soit configurée de sorte que les commandes comme spark-shell exécutent d’autres fichiers binaires précédemment installés plutôt que celui fourni avec Databricks Connect. Vous devez vous assurer que les fichiers binaires Databricks Connect sont prioritaires, ou supprimer ceux installés précédemment.

Si vous ne pouvez pas exécuter des commandes telles que spark-shell, il est également possible que votre PATH n'ait pas été automatiquement configuré par pip3 install, et que vous deviez 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 de nom de fichier, de nom de répertoire ou d’étiquette de volume est incorrecte sur Windows

Si vous utilisez Databricks Connect sur Windows et voyez :

The filename, directory name, or volume label syntax is incorrect.

Databricks Connect a été installé dans un répertoire comportant un espace dans votre chemin d’accès. Vous pouvez contourner ce contournement en installant dans un chemin de répertoire sans espaces, ou en configurant votre chemin à l’aide de la forme de nom abrégée.