Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе содержатся сведения о интерфейсе программирования Python для Декларативного конвейера Spark Lakeflow (SDP).
- Общие сведения об использовании Python для конвейеров см. в статье "Разработка кода конвейера с помощью Python".
- Для справки по SQL см. ссылку на язык SQL системы Pipeline.
- Дополнительные сведения о настройке автозагрузчика см. в разделе "Что такое автозагрузчик?".
pipelines Общие сведения о модуле
Функции Python декларативного конвейера Spark 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_flowdp.create_auto_cdc_from_snapshot_flow@dp.expect(...)@dp.temporary_view
Модуль pipelines ранее назывался dlt в Azure Databricks. Дополнительные сведения о различиях от Apache Spark см. в статье "Что произошло с @dlt?".
Функции для определений наборов данных
Конвейеры обработки данных используют декораторы Python для определения наборов данных, например, материализованных представлений и потоковых таблиц. См. функции для определения наборов данных.
Справочник по API
- append_flow
- create_auto_cdc_flow
- create_auto_cdc_from_snapshot_flow
- create_sink
- create_streaming_table
- Ожидания
- материализованное представление
- table
- temporary_view
Рекомендации по конвейерам Python
При реализации конвейеров с помощью Python-интерфейса для декларативных конвейеров Lakeflow Spark (SDP) важно обратить внимание на следующие аспекты.
- SDP несколько раз оценивает код, который определяет конвейер обработки, в процессе планирования и выполнения. Функции Python, определяющие наборы данных, должны содержать только код, необходимый для определения таблицы или представления. Произвольная логика Python, включённая в определения набора данных, может привести к неожиданному поведению.
- Не пытайтесь реализовать пользовательскую логику мониторинга в определениях набора данных. См. раздел "Определение пользовательского мониторинга конвейеров с помощью перехватчиков событий".
- Функция, используемая для определения набора данных, должна возвращать кадр данных Spark. Не включайте логику в определения набора данных, которые не связаны с возвращаемым кадром данных.
- Никогда не используйте методы, которые сохраняют или записывают данные в файлы или таблицы при работе с кодом набора данных в конвейере.
Примеры операций Apache Spark, которые никогда не должны использоваться в коде конвейера:
collect()count()toPandas()save()saveAsTable()start()toTable()
Что случилось @dlt?
Ранее Azure Databricks использовал dlt модуль для поддержки функциональных возможностей конвейера. Модуль dlt заменен модулем pyspark.pipelines . Вы по-прежнему можете использовать dlt, но Databricks рекомендует использовать pipelines.
Различия между DLT, SDP и Apache Spark
В следующей таблице показаны различия в синтаксисе и функциональности между DLT, Lakeflow Spark декларативными конвейерами и декларативными конвейерами Apache Spark.
| 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 |
Да |
| 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(...) |
Да |