Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta sección está la información detallada sobre la interfaz de programación de Python para Lakeflow Spark Declarative Pipelines (SDP).
- Para obtener información conceptual y una introducción al uso de Python para canalizaciones, consulte Desarrollo de código de canalización con Python.
- Para obtener la referencia de SQL, consulte la referencia del lenguaje SQL de Pipeline.
- Para obtener más información específica sobre la configuración del cargador automático, consulte ¿Qué es el cargador automático?.
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_flowdp.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
- append_flow
- create_auto_cdc_flow
- create_auto_cdc_from_snapshot_flow
- create_sink
- create_streaming_table
- Expectativas
- vista_materializada
- table
- temporary_view
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) |
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í |
| SQL: streaming | CREATE STREAMING TABLE ... |
CREATE STREAMING TABLE ... |
Sí |
| SQL: materializado | CREATE MATERIALIZED VIEW ... |
CREATE MATERIALIZED VIEW ... |
Sí |
| SQL: flujo | 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í |