Referencia del lenguaje Python para canalizaciones de Lakeflow

La interfaz de Python de las canalizaciones de Lakeflow está definida en el módulo pyspark.pipelines, importado como dp.

pipelines Información general del módulo

Las funciones de Python de las canalizaciones de Lakeflow se definen en el módulo pyspark.pipelines (importado como dp). Las canalizaciones implementadas con la API de Python deben importar este módulo:

from pyspark import pipelines as dp

Nota:

El módulo pipelines solo está disponible en el contexto de una canalización. No está disponible en Python que se ejecuta fuera de las canalizaciones. Para obtener más información sobre cómo editar el código de canalización, consulte Desarrollo y depuración de canalizaciones de ETL con el Editor de canalizaciones de Lakeflow.

Canalizaciones de Apache Spark™

Apache Spark incluye canalizaciones declarativas a partir de Spark 4.1, disponibles a través del pyspark.pipelines módulo. Databricks Runtime amplía estas funcionalidades de código abierto con api adicionales e integraciones para uso de producción administrado.

El código escrito con el módulo de código abierto pipelines se ejecuta sin modificaciones en Azure Databricks. Las siguientes características no forman parte de Apache Spark:

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

El módulo pipelines se llamaba anteriormente dlt en Azure Databricks. Para más información y más información sobre las diferencias de Apache Spark, consulte ¿Qué ha ocurrido con @dlt?.

Funciones para definiciones de conjuntos de datos

Las canalizaciones usan decoradores de Python para definir conjuntos de datos como vistas materializadas y tablas de streaming. Consulte Funciones para definir conjuntos de datos.

Referencia de API

Requisitos de codificación para canalizaciones de Python

Estos son requisitos importantes para implementar canalizaciones con la interfaz de Python de canalizaciones de Lakeflow:

  • Las canalizaciones de Lakeflow evalúan el código que define una canalización varias veces durante la planeación y las ejecuciones de canalización. Las funciones de Python que definen conjuntos de datos deben incluir solo el código necesario para definir la tabla o vista. La lógica arbitraria de Python incluida en las definiciones de conjunto de datos podría provocar un comportamiento inesperado.
  • No intente implementar la lógica de supervisión personalizada en las definiciones del conjunto de datos. Vea Definición de la supervisión personalizada de canalizaciones DLT con enlaces de eventos.
  • La función que se usa para definir un conjunto de datos debe devolver un DataFrame de Spark. No incluya lógica en las definiciones de conjunto de datos que no se relacionan con un DataFrame devuelto.
  • Nunca use métodos que guarden o escriban en archivos o tablas como parte del código del conjunto de datos de canalización.

Ejemplos de operaciones de Apache Spark que nunca se deben usar en el código de canalización:

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

¿Qué le pasó a @dlt?

Anteriormente, Azure Databricks usaba el dlt módulo para admitir la funcionalidad de canalización. El dlt módulo se ha reemplazado por el pyspark.pipelines módulo. Puede seguir usando dlt, pero Databricks recomienda usar pipelines.

Diferencias entre DLT, canalizaciones de Lakeflow y canalizaciones declarativas de Apache Spark

En la tabla siguiente se muestran las diferencias en la sintaxis y la funcionalidad entre DLT, las canalizaciones de Lakeflow y las canalizaciones declarativas de Apache Spark.

Para obtener una comparación a nivel de funciones de lo que las canalizaciones de Lakeflow comparten con las canalizaciones declarativas de Apache Spark y añaden a ellas, consulte Canalizaciones declarativas de Apache Spark.

Para obtener una correspondencia propiedad por propiedad entre la configuración de la canalización y la especificación del proyecto SDP, consulte Referencia de propiedades de la canalización.

Nota:

En la documentación de Databricks, el producto de Databricks se denomina canalizaciones de Lakeflow y el marco de código abierto que extiende es Canalizaciones declarativas de Apache Spark™ (SDP). Los dos son interoperables, pero difieren en las características; por ejemplo, las API solo están disponibles en las AUTO CDC canalizaciones de Lakeflow.

Area Sintaxis DLT Sintaxis de SDP (Lakeflow y Apache, si procede) Disponible en Apache Spark
Importaciones import dlt from pyspark import pipelines (as dp, opcionalmente)
Tabla de flujo de datos @dlt.table con un dataframe de streaming @dp.table
Vista materializada @dlt.table con un dataframe por lotes @dp.materialized_view
Ver @dlt.view @dp.temporary_view
Agregar flujo @dlt.append_flow @dp.append_flow
Flujo de actualización No disponible @dp.update_flow No
SQL: streaming CREATE STREAMING TABLE ... CREATE STREAMING TABLE ...
SQL: materializado CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ...
Flujo de SQL CREATE FLOW ... CREATE FLOW ...
Registro de eventos spark.read.table("event_log") spark.read.table("event_log") No
Aplicar cambios (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) No
Expectations @dlt.expect(...) dp.expect(...) No
Modo continuo Configuración de canalización con desencadenador continuo (igual) No
Receptor @dlt.create_sink(...) dp.create_sink(...)
Sumidero ForEachBatch No disponible @dp.foreach_batch_sink(...) No