Справочник по языку Python для конвейеров Lakeflow

Интерфейс Python для конвейеров Lakeflow определён в модуле pyspark.pipelines, который импортируется как dp.

pipelines Общие сведения о модуле

Функции Python для конвейеров Lakeflow определены в модуле pyspark.pipelines (импортируется как dp). Конвейеры, реализованные с помощью API Python, должны импортировать этот модуль:

from pyspark import pipelines as dp

Замечание

Модуль конвейеров доступен только в контексте конвейера. Он недоступен в Python, работающем за пределами конвейеров. Дополнительные сведения об редактировании кода конвейера см. в статье "Разработка и отладка конвейеров ETL" с помощью редактора Конвейеров Lakeflow.

Конвейеры Apache Spark™

Apache Spark включает декларативные конвейеры, начиная с Spark 4.1, которые доступны через pyspark.pipelines модуль. Среда выполнения Databricks расширяет эти возможности с открытым исходным кодом с помощью дополнительных API и интеграции для управляемого рабочего использования.

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

  • dp.create_auto_cdc_flow
  • dp.create_auto_cdc_from_snapshot_flow
  • @dp.expect(...)

Модуль pipelines ранее назывался dlt в Azure Databricks. Дополнительные сведения о различиях от Apache Spark см. в статье "Что произошло с @dlt?".

Функции для определений наборов данных

Конвейеры обработки данных используют декораторы Python для определения наборов данных, например, материализованных представлений и потоковых таблиц. См. функции для определения наборов данных.

Справочник по API

Требования к написанию кода для конвейеров Python

Ниже приведены важные требования, которые необходимо учитывать при реализации конвейеров с использованием интерфейса Python для конвейеров Lakeflow:

  • Конвейеры Lakeflow многократно анализируют код, который определяет конвейер, на этапах планирования и выполнения. Функции Python, определяющие наборы данных, должны содержать только код, необходимый для определения таблицы или представления. Произвольная логика Python, включённая в определения набора данных, может привести к неожиданному поведению.
  • Не пытайтесь реализовать пользовательскую логику мониторинга в определениях набора данных. См. раздел "Определение пользовательского мониторинга конвейеров с помощью перехватчиков событий".
  • Функция, используемая для определения набора данных, должна возвращать кадр данных Spark. Не включайте логику в определения набора данных, которые не связаны с возвращаемым кадром данных.
  • Никогда не используйте методы, которые сохраняют или записывают данные в файлы или таблицы при работе с кодом набора данных в конвейере.

Примеры операций Apache Spark, которые никогда не должны использоваться в коде конвейера:

  • collect()
  • count()
  • toPandas()
  • save()
  • saveAsTable()
  • start()
  • toTable()

Что случилось @dlt?

Ранее Azure Databricks использовал dlt модуль для поддержки функциональных возможностей конвейера. Модуль dlt заменен модулем pyspark.pipelines . Вы по-прежнему можете использовать dlt, но Databricks рекомендует использовать pipelines.

Различия между конвейерами DLT, Lakeflow и декларативными конвейерами Apache Spark

В следующей таблице показаны различия в синтаксисе и функциональности между конвейерами DLT, Lakeflow и Декларативными конвейерами Apache Spark.

Чтобы сравнить на уровне возможностей то, что конвейеры Lakeflow имеют общего с декларативными конвейерами Apache Spark и что они в них добавляют, см. раздел Apache Spark Declarative Pipelines.

Сопоставление свойств конфигурации конвейера с спецификацией проекта SDP см. в справочнике по свойствам конвейера.

Замечание

В документации Databricks продукт Databricks именуется Lakeflow pipelines, а фреймворк с открытым исходным кодом, расширением которого он является, — Apache Spark™ Declarative Pipelines (SDP). Оба совместимы между собой, но различаются по функциям — например, API AUTO CDC доступны только в конвейерах Lakeflow.

Area Синтаксис DLT Синтаксис SDP (Lakeflow и Apache, где применимо) Доступно в Apache Spark
Импорты import dlt from pyspark import pipelines (as dpнеобязательно) Да
Потоковая таблица @dlt.table с кадром данных потоковой передачи @dp.table Да
Материализованное представление @dlt.table с пакетным фреймом данных @dp.materialized_view Да
View @dlt.view @dp.temporary_view Да
Поток добавления @dlt.append_flow @dp.append_flow Да
Поток обновления Недоступно @dp.update_flow нет
SQL — потоковая передача CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Да
SQL — материализованные представления CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Да
SQL — поток CREATE FLOW ... CREATE FLOW ... Да
Журнал событий spark.read.table("event_log") spark.read.table("event_log") нет
Применение изменений (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) нет
Expectations @dlt.expect(...) dp.expect(...) нет
Непрерывный режим Конфигурация конвейера с непрерывным триггером (то же самое) нет
Sink @dlt.create_sink(...) dp.create_sink(...) Да
Приемник ForEachBatch Недоступно @dp.foreach_batch_sink(...) нет