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:

La mayor parte del módulo de canalizaciones solo está disponible en el contexto de una canalización. 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.

También puede aplicar @materialized_view y @table fuera de un canal, en un cuaderno en un entorno de proceso general sin servidor, para definir una vista materializada independiente o una tabla de streaming. Consulte Definir tablas con los decoradores de canalizaciones.

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

Los siguientes son requisitos importantes cuando implementas pipelines con la interfaz de Python:

  • Una canalización evalúa su código fuente varias veces durante la planificación y las ejecuciones. 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 Databricks se denomina Lakeflow Pipelines, y el proyecto Apache Spark que extiende es Apache Spark™ Declarative Pipelines (SDP). Ambos son interoperables pero difieren en sus características. Por ejemplo, las AUTO CDC APIs solo están disponibles en pipelines 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) Sí
Tabla de flujo de datos @dlt.table con un dataframe de streaming @dp.table Sí
Vista materializada @dlt.table con un dataframe por lotes @dp.materialized_view Sí
Ver @dlt.view @dp.temporary_view Sí
Agregar flujo @dlt.append_flow @dp.append_flow Sí
Flujo de actualización No disponible @dp.update_flow No
SQL: streaming CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Sí
SQL: materializado CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Sí
Flujo de SQL CREATE FLOW ... CREATE FLOW ... Sí
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(...) Sí
Sumidero ForEachBatch No disponible @dp.foreach_batch_sink(...) No