Разработка кода конвейера в локальной среде разработки

Вы можете создать исходный код конвейера Python в предпочтительной интегрированной среде разработки (IDE), запустить его локально для тестирования, а затем проверить, развернуть и запустить обновления в рабочей области Azure Databricks без выхода из локальной среды.

Конвейеры Lakeflow — это супермножество декларативных конвейеров Apache Spark™. Код, использующий только API декларативных конвейеров Apache Spark, выполняется как локально, так и в Azure Databricks, но код, использующий функции, уникальные для конвейеров Lakeflow, таких как AUTO CDC и ожидания, выполняется только в Azure Databricks. Сведения о различиях в возможностях см. в справочнике по языку Python для конвейеров Lakeflow.

Для интерактивной разработки и тестирования в рабочей области Azure Databricks используйте редактор Lakeflow Pipelines. См. статью "Разработка и отладка конвейеров ETL" с помощью редактора конвейеров Lakeflow.

Написание кода конвейера с поддержкой интегрированной среды разработки

Напишите код конвейера с помощью модуля pyspark.pipelines, импортированного как dp:

from pyspark import pipelines as dp

Так как модуль является частью Apache Spark, интегрированная среда разработки предоставляет проверку синтаксиса, автозавершение и проверку типов при написании. Код Декларативных конвейеров Apache Spark обычно выполняется без изменения в Azure Databricks. Выполнение той же команды импорта в конвейере Lakeflow импортирует версию pipelines, используемую в Azure Databricks. Полное справочное руководство по Python для конвейеров Lakeflow см. в справочном руководстве по языку Python для конвейеров Lakeflow.

Логика отдельного преобразования для локального тестирования

Самый эффективный способ сделать код конвейера тестируемым локально — хранить логику преобразования в виде обычных функций PySpark, отдельно от декораторов dp. Функция, которая принимает DataFrame и возвращает DataFrame, не зависит от среды выполнения конвейеров Lakeflow, поэтому её можно модульно тестировать с помощью pytest на своей локальной машине, как и любой другой код Apache Spark. Оставляйте декоративные функции тонкими, чтобы они импортировали логику и называли её:

# transformations/clean.py — pure PySpark, unit-testable on its own
def clean_orders(df):
    return df.filter("quantity > 0").withColumn("amount_usd", df.amount.cast("double"))

# pipeline file — a thin dp wrapper that imports and calls the logic
from pyspark import pipelines as dp
from transformations.clean import clean_orders

@dp.table(name="orders_silver")
def orders_silver():
    return clean_orders(spark.readStream.table("orders_bronze"))

Вы можете упаковать общую логику в колесо для повторного использования в конвейерах. Для полного прохождения по написанию и запуску юнит-тестов см. раздел Модульное тестирование для конвейеров.

Запустите конвейеры локально для тестирования

Вы также можете локально запускать конвейеры для разработки и тестирования кода, прежде чем запускать его в Azure Databricks. Используйте интерфейс командной spark-pipelines строки для инициализации, проверки и запуска конвейера с помощью локального Apache Spark. См. руководство по программированию декларативных конвейеров Spark в документации по Apache Spark.

Полный конвейер использует три дополнительных уровня тестирования, и два из них можно выполнять локально:

  • Модульные тесты для вашей логики преобразования, запускаемые с помощью pytest для обычных функций PySpark, описанных выше. Для них не требуется время выполнения конвейера. См . модульное тестирование конвейеров.
  • Проверка (пробный запуск) графа конвейера, исходного кода и ссылок на наборы данных с использованием spark-pipelines локально или databricks pipelines dry-run в рабочей области — без записи данных.
  • Ожидания, которые оценивают правила качества данных для каждой строки каждого запуска. Поскольку это функция выполнения конвейеров Lakeflow, они работают только на Azure Databricks, а не локально. См. Управление качеством данных, используя ожидания конвейера.

Вы не можете выполнять или тестировать функциональные возможности, относящиеся к конвейерам Lakeflow локально. Сюда входят ожидания и AUTO CDC функции.

Запуск конвейеров в Azure Databricks из локальной среды

Используйте группу databricks pipelines команд для проверки, развертывания и запуска обновлений конвейера в рабочей области непосредственно из терминала:

databricks pipelines init      # scaffold a pipeline project
databricks pipelines dry-run   # validate the pipeline graph without publishing data
databricks pipelines deploy    # deploy the project to your workspace
databricks pipelines run       # run an update

Обновления конвейера выполняются в рабочей области Azure Databricks, а не на локальном компьютере, используя вычислительные ресурсы, настроенные для конвейера. Эти команды взаимодействуют с командами bundle декларативных пакетов автоматизации, поэтому вы можете начать с простого проекта и применить конфигурацию пакета и методики CI/CD по мере роста. Сведения об установке и настройке интерфейса командной строки см. в статье "Установка или обновление интерфейса командной строки Databricks". Полный справочник по командам см. в разделе pipelinesгруппа команд. Пошаговое руководство по разработке конвейеров с помощью декларативных пакетов автоматизации.

Синхронизация потока кода из интегрированной среды разработки в рабочую область

В следующей таблице приведены варианты синхронизации исходного кода конвейера между локальной интегрированной среду разработки и рабочей областью Azure Databricks.

Инструмент или шаблон Сведения
Databricks CLI (pipelines группа команд) Используйте команды databricks pipelines для развертывания и запуска проекта pipeline из локальной среды. Смотрите pipelines группу команд.
Декларативные пакеты автоматизации Используйте декларативные пакеты автоматизации для развертывания ресурсов конвейера, начиная от одного файла исходного кода до конфигураций для нескольких конвейеров, заданий и файлов исходного кода. См. статью "Преобразование конвейера в проект пакета".
Расширение Databricks IDE Azure Databricks обеспечивает интеграцию с Visual Studio Code, которая включает простую синхронизацию между локальными файлами интегрированной среды разработки и рабочей области. Это расширение также предоставляет средства для использования декларативных пакетов автоматизации для развертывания ресурсов конвейеров. См. расширение Databricks IDE.
Файлы рабочей области Файлы рабочей области Databricks можно использовать для отправки исходного кода конвейера в рабочую область Databricks, а затем импортировать этот код в конвейер. См. раздел " Что такое файлы рабочей области?".
Папки Git Папки Git позволяют синхронизировать код между локальной средой и Azure Databricks рабочей областью с помощью репозитория Git в качестве посредника. См. папки Git Azure Databricks.