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.
El desarrollo y la prueba del código de canalización difieren de otras cargas de trabajo de Apache Spark. En este artículo se proporciona información general sobre la funcionalidad admitida, los procedimientos recomendados y las consideraciones al desarrollar código de canalización. Para obtener más recomendaciones y procedimientos recomendados, consulte Aplicación de procedimientos recomendados de desarrollo de software y DevOps a canalizaciones.
Nota:
Debe agregar código fuente a una configuración de canalización para validar el código o ejecutar una actualización. Consulte Configuración de canalizaciones.
¿Qué archivos son válidos para el código fuente de canalización?
El código de canalización puede ser Python o SQL. Puede tener una combinación de archivos de código fuente de Python y SQL que respaldan una sola canalización, pero cada archivo solo puede contener un lenguaje. Consulte Desarrollo de código de canalización con Python y Desarrollo de código de canalizaciones declarativas de Spark de Lakeflow con SQL.
Los archivos de origen de las canalizaciones se almacenan en el área de trabajo. Los archivos del área de trabajo representan scripts de Python o SQL creados en el Editor de canalizaciones de Lakeflow. También puede editar los archivos localmente en el IDE preferido y sincronizarlos con el área de trabajo. Para obtener información sobre los archivos del área de trabajo, consulte ¿Qué son los archivos del área de trabajo?. Para obtener información sobre cómo editar con el Editor de canalizaciones de Lakeflow, consulte Desarrollo y depuración de canalizaciones de ETL con el Editor de canalizaciones de Lakeflow. Para obtener información sobre la creación de código en un IDE local, consulte Desarrollo de código de canalización en el entorno de desarrollo local.
Si desarrolla código de Python como módulos o bibliotecas, debe instalar e importar el código y, a continuación, llamar a métodos desde un archivo de Python configurado como código fuente. Consulte Administración de dependencias de Python para canalizaciones.
Nota:
Si necesita usar comandos SQL arbitrarios en un cuaderno de Python, puede usar el patrón de sintaxis spark.sql("<QUERY>") para ejecutar SQL como código de Python.
Las funciones del catálogo de Unity permiten registrar funciones arbitrarias definidas por el usuario de Python para su uso en SQL. Consulte Funciones definidas por el usuario (UDF) en el catálogo de Unity.
Introducción a las características de desarrollo de canalizaciones
Las canalizaciones amplían y aprovechan muchas características de desarrollo de Azure Databricks y presentan nuevas características y conceptos. En la tabla siguiente se proporciona una breve introducción a los conceptos y características que admiten el desarrollo de código de canalización:
| Característica | Description |
|---|---|
| Modo de desarrollo | La ejecución de canalizaciones de forma interactiva (al elegir actualizar a través del Editor de canalizaciones de Lakeflow) usará el modo de desarrollo. Las nuevas canalizaciones se ejecutan con el modo de desarrollo desactivado cuando se ejecutan automáticamente a través de una programación o desencadenador automatizado. Consulte Modo de desarrollo. |
| Ejecución seca | Una actualización de Dry run verifica la corrección del código fuente de la canalización sin aplicar cambios en ninguna tabla. Consulte Comprobación de errores de una canalización sin esperar a que las tablas actualicen. |
| Editor de canalizaciones de Lakeflow | Los archivos python y SQL configurados como código fuente para canalizaciones proporcionan opciones interactivas para validar el código y ejecutar actualizaciones. Vea Cómo desarrollar y depurar canalizaciones de ETL con el Editor de canalizaciones de Lakeflow. |
| Parámetros | Aproveche los parámetros del código fuente y las configuraciones de canalización para simplificar las pruebas y la extensibilidad. Consulte Uso de parámetros con canalizaciones. |
| Conjuntos de recursos de Databricks | Los conjuntos de recursos de Databricks permiten mover configuraciones de canalización y código fuente entre áreas de trabajo. Consulte Conversión de una canalización en un proyecto de Conjunto de recursos de Databricks. |
Creación de conjuntos de datos de ejemplo para desarrollo y pruebas
Databricks recomienda crear conjuntos de datos de desarrollo y pruebas para probar la lógica de canalización con datos esperados y registros potencialmente incorrectos o dañados. Hay varias maneras de crear conjuntos de datos que pueden ser útiles para el desarrollo y las pruebas, incluidos los siguientes:
- Seleccione un subconjunto de datos de un conjunto de datos de producción.
- Use datos anonimizados o generados artificialmente para los orígenes que contienen PII. Para ver un tutorial que usa la
fakerbiblioteca para generar datos para pruebas, consulte Tutorial: Compilación de una canalización de ETL mediante la captura de datos modificados. - Cree datos de prueba con resultados bien definidos en función de la lógica de transformación subsiguiente.
- Anticipe posibles daños en los datos, registros con formato incorrecto y cambios de datos ascendentes mediante la creación de registros que interrumpen las expectativas del esquema de datos.
Por ejemplo, si tiene un archivo que define un conjunto de datos mediante el código siguiente:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
Puede crear un conjunto de datos de ejemplo que contenga un subconjunto de los registros mediante una consulta como la siguiente:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading
En el ejemplo siguiente se muestra cómo filtrar los datos publicados para crear un subconjunto de los datos de producción para desarrollo o pruebas:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
Para usar estos distintos conjuntos de datos, cree varias canalizaciones con el código fuente que implementa la lógica de transformación. Cada una de las canalizaciones puede leer datos del conjunto de datos input_data, pero está configurada para incluir el archivo que crea el conjunto de datos específico del entorno.
¿Cómo procesan los datos los conjuntos de datos de canalización?
En la tabla siguiente se describe cómo las vistas materializadas, las tablas de streaming y las vistas procesan los datos:
| Tipo de conjunto de datos | ¿Cómo se procesan los registros mediante consultas definidas? |
|---|---|
| Tabla de flujo de datos | Cada registro se procesa exactamente una vez. Esto supone un origen de solo anexión. |
| Vista materializada | Los registros se procesan según sea necesario para devolver resultados precisos para el estado de datos actual. Las vistas materializadas deben usarse para tareas de procesamiento de datos, como transformaciones, agregaciones o consultas lentas de computación previa y cálculos usados con frecuencia. Los resultados se almacenan en caché entre actualizaciones. |
| Ver | Los registros se procesan cada vez que se consulta la vista. Use vistas para transformaciones intermedias y comprobaciones de calidad de datos que no se deben publicar en conjuntos de datos públicos. |
Declarar tus primeros conjuntos de datos en pipelines
Las canalizaciones presentan una nueva sintaxis para Python y SQL. Para obtener información sobre los conceptos básicos de la sintaxis de canalización, consulte Desarrollo de código de canalización con Python y Desarrollo de código de canalizaciones declarativas de Spark de Lakeflow con SQL.
Nota:
Las canalizaciones separan las definiciones de conjuntos de datos del procesamiento de actualizaciones y el origen de la canalización no está pensado para la ejecución interactiva.
¿Cómo se configuran las canalizaciones?
La configuración de una canalización se divide en dos categorías generales:
- Configuraciones que definen una colección de archivos (conocidos como código fuente) que usan la sintaxis de canalización para declarar conjuntos de datos.
- Configuraciones que controlan la infraestructura de canalización, la administración de dependencias, cómo se procesan las actualizaciones y cómo se guardan las tablas en el área de trabajo.
La mayoría de las configuraciones son opcionales, pero algunas requieren mucha atención, especialmente al configurar las canalizaciones de producción. Estos incluyen lo siguiente:
- Para que los datos estén disponibles fuera de la canalización, debe declarar un esquema de destino para publicar en el metastore de Hive o en un catálogo de destino y un esquema de destino para publicar en el catálogo de Unity.
- Los permisos de acceso a datos se configuran a través del clúster que se usa para su ejecución. Asegúrese de que el clúster tiene los permisos adecuados configurados para los orígenes de datos y la ubicación de almacenamiento de destino , si se especifica.
Para obtener más información sobre el uso de Python y SQL para escribir código fuente de canalizaciones, consulte Referencia del lenguaje SQL de canalización y Referencia del lenguaje Python de canalizaciones declarativas de Lakeflow Spark.
Para más información sobre la configuración y las configuraciones de canalización, consulte Configuración de canalizaciones.
Despliega tu primera canalización y activa actualizaciones
Para procesar datos con SDP, configure una canalización. Una vez configurada una canalización, puede desencadenar una actualización para calcular los resultados de cada conjunto de datos de la canalización. Para empezar a usar canalizaciones, consulte Tutorial: Compilación de una canalización ETL mediante la captura de datos modificados.
¿Qué es la actualización de una canalización?
Las canalizaciones despliegan la infraestructura y recalculan el estado de los datos al iniciar una actualización. Una actualización hace lo siguiente:
- Inicia un clúster con la configuración correcta.
- Detecta todas las tablas y vistas definidas y comprueba si hay errores de análisis, como nombres de columna no válidos, dependencias que faltan y errores de sintaxis.
- Crea o actualiza las tablas y vistas con los datos más recientes disponibles.
Las canalizaciones se pueden ejecutar continuamente o según una programación en función de los requisitos de costo y latencia de su caso de uso. Consulte Ejecutar una actualización de canalización.
Ingesta de datos con canalizaciones
Las canalizaciones admiten todos los orígenes de datos disponibles en Azure Databricks.
Databricks recomienda usar tablas de flujo de datos para la mayoría de los casos de uso de ingesta. Para los archivos que llegan al almacenamiento de objetos en la nube, Databricks recomienda Auto Loader. Puede ingerir datos directamente con una tubería de datos de la mayoría de los sistemas de mensajes.
Para más información sobre cómo configurar el acceso al almacenamiento en la nube, consulte Configuración del almacenamiento en la nube.
En el caso de los formatos no compatibles con Auto Loader, puede usar Python o SQL para consultar cualquier formato compatible con Apache Spark. Consulte Carga de datos en canalizaciones.
Supervisión y aplicación de la calidad de los datos
Las expectativas se usan para especificar controles de calidad de datos en el contenido de un conjunto de datos. A diferencia de una CHECK restricción en una base de datos tradicional que impide agregar registros que produzcan errores en la restricción, las expectativas proporcionan flexibilidad al procesar los datos que producen errores en los requisitos de calidad de los datos. Esta flexibilidad le permite procesar y almacenar datos que es de esperar que estén desordenados y otros que deban cumplir estrictos requisitos de calidad. Consulte Administración de la calidad de los datos con las expectativas de canalización.
¿Cómo están las canalizaciones declarativas de Spark de Lakeflow y Delta Lake relacionadas?
SDP amplía la funcionalidad de Delta Lake. Dado que las tablas creadas y administradas por canalizaciones son tablas Delta, tienen las mismas garantías y características proporcionadas por Delta Lake. Consulte ¿Qué es Delta Lake en Azure Databricks?.
Las canalizaciones agregan varias propiedades de tabla además de las muchas propiedades de tabla que se pueden establecer en Delta Lake. Consulte Referencia de propiedades de canalización y Referencia de propiedades de tabla Delta.
Cómo se crean y administran las tablas mediante canalizaciones
Azure Databricks administra automáticamente las tablas creadas por canalizaciones, lo que determina cómo se deben procesar las actualizaciones para calcular correctamente el estado actual de una tabla y realizar una serie de tareas de mantenimiento y optimización.
Para la mayoría de las operaciones, permita que la canalización procese todas las actualizaciones, inserciones y eliminaciones en una tabla de destino. Para más información y limitaciones, vea Conservación de eliminaciones manuales o actualizaciones.
Tareas de mantenimiento realizadas por canalizaciones
Azure Databricks realiza tareas de mantenimiento en tablas administradas por canalizaciones con una cadencia óptima mediante la optimización predictiva. El mantenimiento puede mejorar el rendimiento de las consultas y reducir el costo quitando las versiones anteriores de las tablas. Esto incluye las operaciones completas de OPTIMIZE y VACUUM. Las tareas de mantenimiento se realizan según una programación que decide la optimización predictiva y solo si se ha ejecutado una actualización de canalización desde el mantenimiento anterior.
Para comprender la frecuencia con la que se ejecuta la optimización predictiva y comprender los costos de mantenimiento, consulte Referencia de la tabla del sistema de optimización predictiva.
Limitaciones
Para obtener una lista de las limitaciones, consulte Limitaciones de canalización.
Para obtener una lista de los requisitos y limitaciones específicos del uso de canalizaciones con el catálogo de Unity, consulte Uso del catálogo de Unity con canalizaciones.
Recursos adicionales
- Las canalizaciones tienen compatibilidad completa en la API REST de Databricks. Consulte La API REST de Canalización.
- Para las configuraciones de canalización y tabla, consulte Referencia de propiedades de canalización.
- Referencia del lenguaje SQL de canalización.
- Referencia del lenguaje Python para las canalizaciones declarativas de Lakeflow Spark.