Freigeben über


Problembehandlung bei Databricks Connect für Python

Hinweis

Dieser Artikel behandelt Databricks Connect für Databricks Runtime Version 13.3 LTS und höher.

Dieser Artikel enthält Informationen zur Problembehandlung für Databricks Connect für Python. Mit Databricks Connect können Sie beliebte IDEs, Notebookserver und benutzerdefinierte Anwendungen mit Azure Databricks-Clustern verbinden. Weitere Informationen finden Sie unter Was ist Databricks Connect?. Die Scala-Version dieses Artikels finden Sie unter Problembehandlung für Databricks Connect für Scala.

Fehler: StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, Fehler bei DNS-Auflösung oder „Received http2 header with status 500“ (HTTP2-Header mit Status 500 empfangen)

Problem: Wenn Sie versuchen, Code mit Databricks Connect auszuführen, erhalten Sie eine Fehlermeldung, die Zeichenfolgen wie StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failed oder Received http2 header with status: 500 enthält.

Mögliche Ursache: Databricks Connect kann Ihren Cluster nicht erreichen.

Empfohlene Lösungen:

  • Überprüfen Sie, ob der Name Ihrer Arbeitsbereichsinstanz korrekt ist. Wenn Sie Umgebungsvariablen verwenden, überprüfen Sie, ob die zugehörige Umgebungsvariable auf Ihrem lokalen Entwicklungscomputer verfügbar und korrekt ist.
  • Überprüfen Sie, ob die Cluster-ID korrekt ist. Wenn Sie Umgebungsvariablen verwenden, überprüfen Sie, ob die zugehörige Umgebungsvariable auf Ihrem lokalen Entwicklungscomputer verfügbar und korrekt ist.
  • Überprüfen Sie, ob Ihr Cluster über die richtige benutzerdefinierte Clusterversion verfügt, die mit Databricks Connect kompatibel ist.

Nicht übereinstimmende Python-Versionen

Vergewissern Sie sich, dass die lokal verwendete Python-Version mindestens dieselbe Nebenversion wie die Version im Cluster aufweist (z. B. 3.10.11 und 3.10.10 ist in Ordnung, 3.10 und 3.9 nicht). Unterstützte Versionen finden Sie in der Versionsunterstützungsmatrix.

Wenn lokal mehrere Python-Versionen installiert sind, sollten Sie sich vergewissern, dass Databricks Connect die richtige Version verwendet, indem Sie die Umgebungsvariable PYSPARK_PYTHON festlegen (z. BPYSPARK_PYTHON=python3).

Widersprüchliche PySpark-Installationen

Das databricks-connect-Paket steht im Konflikt mit PySpark. Wenn beides installiert ist, treten beim Initialisieren des Spark-Kontexts in Python Fehler auf. Dies kann sich auf verschiedene Weise manifestieren, z. B. durch Fehlermeldungen wie „stream corrupted“ (Datenstrom beschädigt) oder „class not found“ (Klasse nicht gefunden). Wenn pyspark in Ihrer Python-Umgebung installiert ist, stellen Sie sicher, dass es vor der Installation von databricks-connect deinstalliert ist. Stellen Sie nach der Deinstallation von PySpark sicher, dass das Databricks Connect-Paket vollständig neu installiert wird:

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 und PySpark schließen sich gegenseitig aus, aber es ist möglich, Python-virtuelle Umgebungen zu verwenden, um mit databricks-connect in Ihrer IDE Remoteentwicklung und mit pyspark in einem Terminal lokale Tests durchzuführen. Databricks empfiehlt jedoch, Databricks Connect für Python mit serverloser Berechnung für alle Tests zu verwenden, aus den folgenden Gründen:

  • Databricks Runtime und daher auch databricks-connect enthält Funktionen, die in der OSS pyspark nicht verfügbar sind.
  • Das Testen mit databricks-connect und Serverless ist schneller als das lokale Testen mit pyspark.
  • Unity Catalog-Integrationen sind in pyspark nicht verfügbar, daher werden beim Testen mit pyspark lokal keine Berechtigungen durchgesetzt.
  • Zum Testen von End-to-End mit einer externen Abhängigkeit wie Databricks Compute sind Integrationstests im Gegensatz zu Komponententests am besten geeignet.

Wenn Sie weiterhin eine Verbindung mit einem lokalen Spark-Cluster herstellen möchten, können Sie eine Verbindungszeichenfolge mit den folgenden Schritten angeben:

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

Widersprüchlicher oder fehlender PATH-Eintrag für Binärdateien

Es ist möglich, dass Ihr PATH so konfiguriert ist, dass Befehle wie spark-shell eine andere zuvor installierte Binärdatei anstelle der mit Databricks Connect bereitgestellten Binärdatei ausführen. Sie sollten entweder dafür sorgen, dass die Databricks Connect-Binärdateien Vorrang haben, oder die zuvor installierten Binärdateien entfernen.

Wenn Sie keine Befehle wie spark-shell ausführen können, ist es möglicherweise auch so, dass Ihr PATH nicht automatisch von pip3 install gesetzt wurde, und Sie müssen das Installationsverzeichnis bin manuell zu Ihrem PATH hinzufügen. Es ist möglich, Databricks Connect mit IDEs zu verwenden, auch wenn dies nicht eingerichtet ist.

Der Dateiname, der Verzeichnisname oder die Syntax der Volumebezeichnung unter Windows ist falsch

Wenn Sie Databricks Connect unter Windows verwenden und folgende Fehlermeldung angezeigt wird:

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

Databricks Connect wurde in einem Verzeichnis mit einem Leerzeichen in Ihrem Pfad installiert. Sie können dieses Problem vermeiden, indem Sie die Installation in einem Verzeichnispfad ohne Leerzeichen vornehmen oder indem Sie den Pfad im Kurznamenformat konfigurieren.