Устранение неполадок 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 = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()

Ошибки, связанные с подключением к серверу Apache Spark

Databricks Connect создается в среде выполнения Databricks, которая имеет разные зависимости, чем открытый код Apache Spark. Попытка подключиться к серверу Apache Spark открытый код (например, локально запущенный сервер Apache Spark 3.5.x Spark Connect в sc://localhost), приводит к ошибкам, таким как несоответствие класса, несоответствия поведения API или сбои сериализации. В частности, Databricks Connect 15.4 и 16.4 несовместимы с Apache Spark 3.5.x, так как они используют другую версию библиотеки json4s .

Используйте кластер Databricks или бессерверные вычисления вместо открытый код сервера Apache Spark. См. конфигурацию вычислений для Databricks Connect.

Конфликтующие или отсутствующие записи 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 был установлен в каталог с пробелом в вашем пути. Это можно обойти, установив путь к каталогу без пробелов или настроив путь с помощью формы короткого имени.