Compartir a través de


Referencia del lenguaje Python de Lakeflow Spark Canalizaciones declarativas

En esta sección está la información detallada sobre la interfaz de programación de Python para Lakeflow Spark Declarative Pipelines (SDP).

pipelines Información general del módulo

Las funciones de Python de las canalizaciones declarativas de Spark 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(...)
  • @dp.temporary_view

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

Consideraciones para canalizaciones de Python

A continuación se indican consideraciones importantes al implementar canalizaciones con la interfaz de Python de Canalizaciones declarativas de Spark (SDP) de Lakeflow:

  • SDP evalúa 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 Defina la supervisión personalizada de canalizaciones 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, SDP y Apache Spark

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

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
SQL: streaming CREATE STREAMING TABLE ... CREATE STREAMING TABLE ...
SQL: materializado CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ...
SQL: flujo 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(...)