Problemen met Databricks Connect oplossen voor Python

Notitie

Dit artikel bevat informatie over Databricks Connect voor Databricks Runtime 13.3 LTS en hoger.

Dit artikel bevat informatie over probleemoplossing voor Databricks Connect voor Python. Met Databricks Connect kunt u populaire IDE's, notebookservers en aangepaste toepassingen verbinden met Azure Databricks clusters. Zie Databricks Connect. Zie Problemen met Databricks Connect voor Scala oplossen voor de Scala-versie van dit artikel.

Fout: StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS-omzetting is mislukt of ontvangen http2-header met status 500

Probleem: Wanneer u code probeert uit te voeren met Databricks Connect, krijgt u een foutbericht met tekenreeksen zoals StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failedof Received http2 header with status: 500.

Mogelijke oorzaak: Databricks Connect kan uw cluster niet bereiken.

Aanbevolen oplossingen:

  • Controleer of de naam van uw werkruimtevoorbeeld juist is. Als u omgevingsvariabelen gebruikt, controleert u of de gerelateerde omgevingsvariabele beschikbaar is en juist is op uw lokale ontwikkelcomputer.
  • Controleer of de cluster-id juist is. Als u omgevingsvariabelen gebruikt, controleert u of de gerelateerde omgevingsvariabele beschikbaar is en juist is op uw lokale ontwikkelcomputer.
  • Controleer of uw cluster de juiste aangepaste clusterversie heeft die compatibel is met Databricks Connect.

Python versie komt niet overeen

Controleer of de Python versie die u lokaal gebruikt, ten minste dezelfde secundaire versie heeft als de versie op het cluster (bijvoorbeeld 3.10.11 versus 3.10.10 is OK, 3.10 versus 3.9 niet). Zie de -versieondersteuningsmatrixvoor ondersteunde versies.

Als u meerdere Python versies lokaal hebt geïnstalleerd, moet u ervoor zorgen dat Databricks Connect de juiste versie gebruikt door de omgevingsvariabele PYSPARK_PYTHON in te stellen (bijvoorbeeld PYSPARK_PYTHON=python3).

Conflicterende PySpark-installaties

Het databricks-connect pakket conflicteert met PySpark. Als beide zijn geïnstalleerd, worden er fouten veroorzaakt bij het initialiseren van de Spark-context in Python. Dit kan zich op verschillende manieren voordoen, waaronder fouten met 'stream beschadigd' of 'klasse niet gevonden'. Als u pyspark in uw Python-omgeving hebt geïnstalleerd, controleert u of deze is verwijderd voordat u databricks-connect installeert. Nadat u PySpark hebt verwijderd, moet u het Databricks Connect-pakket volledig opnieuw installeren:

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 en PySpark sluiten elkaar wederzijds uit, maar het is mogelijk om Python virtuele omgevingen te gebruiken om externe ontwikkeling uit te voeren met databricks-connect in uw IDE en lokale tests met pyspark in een terminal. Databricks raadt echter aan om Databricks Connect te gebruiken voor Python met serverloze compute om de volgende redenen:

  • Databricks Runtime, en dus databricks-connect, bevat functies die niet beschikbaar zijn in de OSS-pyspark.
  • Testen met databricks-connect en serverloos is sneller dan testen met behulp van pyspark lokaal.
  • Unity Catalog-integraties zijn niet beschikbaar in pyspark, dus er worden geen machtigingen afgedwongen wanneer u test met behulp van pyspark lokaal.
  • Voor het testen van end-to-end met een externe afhankelijkheid, zoals Databricks Compute, zijn integratietests, in tegenstelling tot eenheidstests, het beste.

Als u nog steeds verbinding wilt maken met een lokaal Spark-cluster, kunt u een connection string opgeven met behulp van het volgende:

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

Conflicterende of ontbrekende PATH vermelding voor binaire bestanden

Het is mogelijk dat uw PATH is geconfigureerd, zodat opdrachten zoals spark-shell een ander eerder geïnstalleerd binair bestand worden uitgevoerd in plaats van het bestand dat wordt geleverd met Databricks Connect. Zorg ervoor dat de binaire Databricks Connect-bestanden voorrang hebben of dat de eerder geïnstalleerde bestanden worden verwijderd.

Als u opdrachten zoals spark-shell niet kunt uitvoeren, is het ook mogelijk dat uw PATH niet automatisch is ingesteld door pip3 install en u de installatie-dir bin handmatig aan uw PATH moet toevoegen. Het is mogelijk om Databricks Connect te gebruiken met IDE's, zelfs als dit niet is ingesteld.

De syntaxis van de bestandsnaam, mapnaam of volumelabel is onjuist op Windows

Als u Databricks Connect gebruikt op Windows en de volgende foutmelding ziet:

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

Databricks Connect is geïnstalleerd in een map met een spatie in uw pad. U kunt dit omzeilen door dit te installeren in een mappad zonder spaties of door het pad te configureren met behulp van het korte naamformulier.