Устранение неполадок Databricks Connect для Python

Примечание.

В этой статье рассматриваются Databricks Connect для Databricks Runtime 13.3 LTS и более поздних версий.

В этой статье содержатся сведения об устранении неполадок для Databricks Connect для Python. Databricks Connect позволяет подключать популярные среды IDE, серверы блокнотов и пользовательские приложения к кластерам Azure Databricks. См. Databricks Connect. Сведения о версии Scala этой статьи см. в разделе "Устранение неполадок Databricks Connect для Scala".

Ошибка: StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, сбой разрешения DNS или заголовок HTTP2 с состоянием 500

проблема. При попытке выполнить код с помощью Databricks Connect вы получите сообщения об ошибках, содержащие строки, такие как StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failedили Received http2 header with status: 500.

Возможная причина: Databricks Connect не может связаться с кластером.

Рекомендуемые решения:

  • Убедитесь, что имя экземпляра рабочей области указано правильно. Если вы используете переменные среды, убедитесь, что связанная переменная среды доступна и исправлена на локальном компьютере разработки.
  • Проверьте правильность идентификатора кластера. Если вы используете переменные среды, убедитесь, что связанная переменная среды доступна и исправлена на локальном компьютере разработки.
  • Убедитесь, что кластер имеет правильную пользовательскую версию кластера, совместимую с Databricks Connect.

несоответствие версий Python

Проверьте, что версия Python, которая используется локально, имеет по крайней мере такой же минорный релиз, как и версия в кластере (например, 3.10.11 по сравнению с 3.10.10 — это нормально, а 3.10 по сравнению с 3.9 — нет). Сведения о поддерживаемых версиях см. в матрице поддержки версий.

Если у вас установлено несколько версий Python локально, убедитесь, что Databricks Connect использует правильный, задав переменную среды PYSPARK_PYTHON (например, PYSPARK_PYTHON=python3).

Конфликтующие установки PySpark

Пакет databricks-connect конфликтует с PySpark. При установке обоих компонентов возникают ошибки при инициализации контекста Spark в Python. Это может проявиться несколькими способами, включая ошибки "поток поврежден" или "класс не найден". Если в среде Python установлен pyspark, перед установкой databricks-connect удалите его. После удаления PySpark необходимо полностью переустановить пакет 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 и PySpark являются взаимно исключающими, но можно использовать виртуальные среды Python для удаленной разработки в интегрированной среде разработки с помощью databricks-connect и для локального тестирования с помощью pyspark в терминале. Однако Databricks рекомендует использовать Databricks Connect для Python с безсерверными вычислениями для всех тестов по следующим причинам:

  • Среда выполнения Databricks и, следовательно, databricks-connect, содержит функции, недоступные в pysparkOSS.
  • Тестирование с помощью databricks-connect и бессерверного тестирования выполняется быстрее, чем при использовании pyspark локально.
  • Интеграции каталога Unity недоступны в pyspark, поэтому разрешения не будут применяться при использовании pyspark локально.
  • Для тестирования от начала до конца с внешними зависимостями, такими как вычислительные ресурсы Databricks, лучше всего подойдут интеграционные тесты, а не модульные тесты.

Если вы по-прежнему решили подключиться к локальному кластеру Spark, можно указать connection string, используя следующее:

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

Конфликтующие или отсутствующие записи PATH для двоичных файлов

Возможно, ваш путь настроен таким образом, чтобы команды, такие как spark-shell, запускали другой ранее установленный двоичный файл вместо того, который был предоставлен с Databricks Connect. Необходимо убедиться, что двоичные файлы Databricks Connect имеют приоритет, либо удалить ранее установленные.

Если вы не можете выполнять команды, такие как spark-shell, возможно, что ваш PATH не был автоматически настроен с помощью pip3 install, и вам потребуется вручную добавить каталог установки bin в PATH. Можно использовать Databricks Connect со средами разработки, даже если настройка не выполнена.

Неправильный синтаксис имени файла, имени каталога или метки тома в Windows

Если вы используете Databricks Connect в Windows и видите следующее:

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

Databricks Connect был установлен в каталог с пробелом в вашем пути. Это можно обойти, установив путь к каталогу без пробелов или настроив путь с помощью формы короткого имени.