Rozwiązywanie problemów z programem Databricks Connect dla Python

Uwaga

W tym artykule opisano usługę Databricks Connect dla środowiska Databricks Runtime 13.3 LTS lub nowszego.

Ten artykuł zawiera informacje dotyczące rozwiązywania problemów z programem Databricks Connect dla Python. Usługa Databricks Connect umożliwia łączenie popularnych środowisk IDE, serwerów notesów i aplikacji niestandardowych z klastrami Azure Databricks. Zobacz Databricks Connect. Aby zapoznać się z wersją tego artykułu dla Scali, zobacz Troubleshooting Databricks Connect for Scala.

Błąd: StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, rozpoznawanie nazw DNS nie powiodło się lub odebrano nagłówek HTTP/2 ze statusem 500

Problem: Podczas próby uruchomienia kodu za pomocą usługi Databricks Connect są wyświetlane komunikaty o błędach zawierające ciągi, takie jak StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failedlub Received http2 header with status: 500.

Możliwa przyczyna: usługa Databricks Connect nie może nawiązać połączenia z klastrem.

Zalecane rozwiązania:

  • Upewnij się, że nazwa wystąpienia obszaru roboczego jest poprawna. Jeśli używasz zmiennych środowiskowych, sprawdź, czy powiązana zmienna środowiskowa jest dostępna i poprawna na lokalnym komputerze deweloperskim.
  • Upewnij się, że identyfikator klastra jest poprawny. Jeśli używasz zmiennych środowiskowych, sprawdź, czy powiązana zmienna środowiskowa jest dostępna i poprawna na lokalnym komputerze deweloperskim.
  • Sprawdź, aby upewnić się, że Twój klaster ma prawidłową niestandardową wersję klastra, która jest zgodna z Databricks Connect.

Niezgodność wersji Pythona

Sprawdź, czy lokalnie używana wersja Pythona ma co najmniej tę samą wersję drugorzędną co wersja na klastrze (na przykład 3.10.11 versus 3.10.10 jest OK, 3.10 versus 3.9 nie jest). Aby uzyskać informacje o obsługiwanych wersjach, zobacz macierz obsługi wersji.

Jeśli masz zainstalowaną lokalnie wiele wersji Python, upewnij się, że program Databricks Connect używa odpowiedniej wersji, ustawiając zmienną środowiskową PYSPARK_PYTHON (na przykład PYSPARK_PYTHON=python3).

Sprzeczne instalacje PySpark

Pakiet databricks-connect powoduje konflikt z narzędziem PySpark. Zainstalowanie obu tych elementów spowoduje błędy podczas inicjowania kontekstu platformy Spark w Python. Może to objawiać się na kilka sposobów, w tym błędy "uszkodzenie strumienia" lub "Nie znaleziono klasy". Jeśli masz zainstalowany pyspark w środowisku Python, przed zainstalowaniem databricks-connect należy go odinstalować. Po odinstalowaniu programu PySpark upewnij się, że w pełni zainstaluj pakiet 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 i PySpark się wykluczają, ale można użyć środowisk wirtualnych Python do zdalnego tworzenia aplikacji z databricks-connect w IDE i testowania lokalnego przy użyciu pyspark w terminalu. Jednak usługa Databricks zaleca używanie programu Databricks Connect na potrzeby Pythona z bezserwerowymi obliczeniami ze względu na następujące powody:

  • Środowisko Databricks Runtime, a tym samym databricks-connect, zawiera funkcje, które nie są dostępne w systemie operacyjnym pyspark.
  • Testowanie z użyciem databricks-connect i technologii bezserwerowej jest szybsze niż testowanie przy użyciu pyspark lokalnie.
  • Integracje z Unity Catalog nie są dostępne w programie pyspark, więc lokalnie, podczas testowania przy użyciu pyspark, żadne uprawnienia nie będą wymuszane.
  • W przypadku testowania kompleksowej zależności zewnętrznej, takiej jak obliczenia usługi Databricks, testy integracji, w przeciwieństwie do testów jednostkowych, są najlepsze.

Jeśli nadal zdecydujesz się nawiązać połączenie z lokalnym klastrem Spark, możesz określić connection string przy użyciu następujących elementów:

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

Konflikt lub brak wpisu PATH dla plików binarnych

Istnieje możliwość, że PATH jest skonfigurowany tak, aby polecenia, takie jak spark-shell, uruchamiały inne, wcześniej zainstalowane pliki binarne zamiast tego dostarczonego z Databricks Connect. Upewnij się, że pliki binarne usługi Databricks Connect mają pierwszeństwo lub usuń zainstalowane wcześniej pliki binarne.

Jeśli nie możesz uruchamiać poleceń, takich jak spark-shell, możliwe, że zmienna środowiskowa PATH nie została automatycznie skonfigurowana przez pip3 install i musisz ręcznie dodać katalog instalacji bin do swojej ścieżki PATH. Możesz użyć usługi Databricks Connect z środowiskami IDE, nawet jeśli nie jest to skonfigurowane.

Nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest niepoprawna w Windows

Jeśli używasz usługi Databricks Connect na Windows i zobaczysz:

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

Program Databricks Connect został zainstalowany w katalogu ze spacją w ścieżce. Można to obejść, instalując do ścieżki katalogu bez spacji lub konfigurując ścieżkę przy użyciu krótkiej formy nazwy.