Поделиться через


Решение проблем с Databricks Connect для Python

Примечание.

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

В этой статье содержатся сведения об устранении неполадок для Databricks Connect для Python. Databricks Connect позволяет подключать популярные интегрированные среды разработки, серверы блокнотов и пользовательские приложения к кластерам 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. Это может проявиться несколькими способами, включая ошибки "поток поврежден" или "класс не найден". Если вы установили pyspark в среде Python, убедитесь, что он удаляется перед установкой 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()

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