Переключение между Databricks Connect и локальной средой Spark
Я хочу использовать Databricks Connect для разработки конвейера pyspark. DBConnect действительно великолепен, потому что я могу запускать свой код в кластере, где находятся фактические данные, поэтому он идеально подходит для интеграционного тестирования, но я также хочу иметь возможность во время разработки и модульного тестирования (pytest
с pytest-spark
), просто используя локальную среду Spark.
Есть ли способ настроить DBConnect, чтобы в одном случае я просто использовал локальную среду Spark, а в другом - DBConnect?
1 ответ
Мои 2 цента, так как я занимаюсь этим типом разработки уже несколько месяцев:
- Работайте с двумя средами Python : одна с подключением к кирпичам данных (и, следовательно, без установленного pyspark), а другая с установленным только pyspark. Если вы хотите выполнить тесты, просто активируйте «локальную» виртуальную среду и запустите pytest как обычно. Убедитесь, что, как отметили некоторые комментаторы, вы инициализируете сеанс pyspark, используя
SparkConf().setMaster("local")
. - Pycharm очень помогает переключаться между средами во время разработки. Я всегда нахожусь на «локальном» venv по умолчанию, но всякий раз, когда я хочу выполнить что-то с помощью подключения к кирпичам данных, я просто создаю новую конфигурацию «Выполнить» из меню. Очень просто.
Кроме того, помните о некоторых ограничениях подключения к кирпичам данных:
- Официально он больше не поддерживается, и Databricks рекомендует по возможности переходить на dbx .
- Пользовательские функции просто не будут работать в databricks-connect.
- Интеграция с Mlflow ненадежна. В моем случае я могу загружать и использовать модели, но не могу регистрировать новый эксперимент или отслеживать модели, используя
databricks
отслеживание uri. Это может зависеть от вашей среды выполнения Databricks, mlflow и локальной версии Python.