Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)
En esta página, se explica cómo habilitar la integración del linaje de datos en Managed Airflow.
Acerca de la integración del linaje de datos
El linaje de datos es una función de Knowledge Catalog que supervisa el movimiento de los datos a través de tus sistemas para saber de dónde provienen, a dónde se pasan y qué transformaciones se les aplican.
Managed Airflow usa el paquete apache-airflow-providers-openlineage para generar los eventos de linaje que se envían a la API de Data Lineage.
Este paquete ya está instalado en los entornos de Managed Airflow. Si instalas otra versión de este paquete, es posible que cambie la lista de operadores compatibles. Te recomendamos que lo hagas solo si es necesario y que conserves la versión preinstalada del paquete en caso contrario.
El linaje de datos está disponible para los entornos en las mismas regiones que las regiones de Knowledge Catalog que admiten el linaje de datos.
Si el linaje de datos está habilitado en tu entorno de Managed Service para Apache Airflow, Managed Service para Apache Airflow informa la información de linaje a la API de Data Lineage para los DAG que utilizan cualquiera de los operadores compatibles. También puedes enviar eventos de linaje personalizados si deseas informar el linaje de un operador que no es compatible.
Puedes acceder a la información de linaje con lo siguiente:
- API de Data Lineage
- Gráficos de linaje para las entradas compatibles en Knowledge Catalog. Para obtener más información, consulta Gráficos de linaje en la documentación de Knowledge Catalog.
Cuando creas un entorno, la integración del linaje de datos se habilita automáticamente si se cumplen las siguientes condiciones:
La API de Data Lineage está habilitada en tu proyecto. Para obtener más información, consulta Habilita la API de Data Lineage en la documentación de Knowledge Catalog.
No se configuró un backend de linaje personalizado en Airflow.
Puedes inhabilitar la integración del linaje de datos cuando creas un entorno.
Para un entorno existente, puedes habilitar o inhabilitar la integración del linaje de datos en cualquier momento.
Consideraciones sobre las funciones en Managed Service para Apache Airflow
Managed Airflow realiza una llamada RPC para crear eventos de linaje en los siguientes casos:
- Cuando se inicia o finaliza una tarea de Airflow
- Cuando se inicia o finaliza una ejecución de DAG
Para obtener detalles sobre estas entidades, consulta el modelo de información de linaje y la referencia de la API de Lineage en la documentación de Knowledge Catalog.
El tráfico de linaje emitido está sujeto a cuotas en la API de Data Lineage. Managed Airflow consume la cuota de escritura.
Los precios asociados con el manejo de datos de linaje están sujetos a los precios de linaje. Consulta las consideraciones sobre el linaje de datos.
Consideraciones sobre el rendimiento en Managed Service para Apache Airflow
El linaje de datos se informa al final de la ejecución de la tarea de Airflow. En promedio, el informe de linaje de datos tarda entre 1 y 2 segundos.
Esto no afecta el rendimiento de la tarea en sí: las tareas de Airflow no fallan si el linaje no se informa correctamente a la API de Lineage. No hay ningún impacto en la lógica principal del operador, pero toda la instancia de la tarea se ejecuta un poco más para tener en cuenta los datos de linaje de informes.
Un entorno que informa el linaje de datos tendrá un pequeño aumento en los costos asociados, debido al tiempo adicional necesario para informar el linaje de datos.
Cumplimiento
El linaje de datos ofrece diferentes niveles de compatibilidad para funciones como los Controles del servicio de VPC. Revisa las consideraciones sobre el linaje de datos para asegurarte de que los niveles de compatibilidad coincidan con los requisitos de tu entorno.
Antes de comenzar
Esta función proporciona compatibilidad con el cumplimiento variable. Asegúrate de revisar primero ambas consideraciones sobre las funciones específicas de Managed Service para Apache Airflow, y consideraciones sobre las funciones de linaje de datos.
La integración del linaje de datos es compatible con Managed Airflow 2.1.2 y versiones posteriores con Airflow 2.2.5 y versiones posteriores.
Todos los permisos de IAM necesarios para el linaje de datos ya están incluidos en el rol de trabajador de Composer (
roles/composer.worker). Este rol es el rol obligatorio para las cuentas de servicio del entorno.Para obtener más información sobre los permisos de linaje de datos, consulta los roles y permisos de linaje en la documentación de Knowledge Catalog.
Verifica si un operador es compatible
La compatibilidad con el linaje de datos la proporciona el paquete de proveedor en el que se encuentra el operador:
Consulta los registros de cambios del paquete de proveedor en el que se encuentra el operador para las entradas que agregan compatibilidad con OpenLineage.
Por ejemplo, BigQueryToBigQueryOperator admite OpenLineage a partir de
apache-airflow-providers-googlela versión 11.0.0.Verifica la versión del paquete de proveedor que usa tu entorno. Para ello, consulta la lista de paquetes preinstalados para la versión de Managed Airflow que se usa en tu entorno. También puedes instalar una versión diferente del paquete en tu entorno.
Además, en la página Clases compatibles
de la documentación de apache-airflow-providers-openlineage, se enumeran los operadores compatibles más recientes.
Configura la integración del linaje de datos
La integración del linaje de datos para Managed Service para Apache Airflow se administra por entorno. Esto significa que habilitar la función requiere dos pasos:
- Habilita la API de Data Lineage en tu proyecto.
- Habilita la integración del linaje de datos en un entorno específico de Managed Service para Apache Airflow.
Habilita el linaje de datos en Managed Service para Apache Airflow
Console
En la Google Cloud consola, ve a la página Entornos.
En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.
Selecciona la pestaña Configuración del entorno.
En la sección Integración del linaje de Knowledge Catalog, haz clic en Editar.
En el panel Integración del linaje de Knowledge Catalog, selecciona Habilitar la integración con el linaje de Knowledge Catalog.
Haz clic en Guardar.
gcloud
Usa el argumento --enable-cloud-data-lineage-integration.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-cloud-data-lineage-integration
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre de tu entorno.LOCATION: Es la región en la que se encuentra el entorno.
Ejemplo:
gcloud composer environments update example-environment \
--location us-central1 \
--enable-cloud-data-lineage-integration
Inhabilita el linaje de datos en Managed Service para Apache Airflow
Si inhabilitas la integración del linaje en un entorno de Managed Service para Apache Airflow, no se inhabilita la API de Data Lineage. Si deseas inhabilitar por completo los informes de linaje para tu proyecto, también inhabilita la API de Data Lineage. Consulta Inhabilita servicios.
Console
En la Google Cloud consola, ve a la página Entornos.
En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.
Selecciona la pestaña Configuración del entorno.
En la sección Integración del linaje de Knowledge Catalog, haz clic en Editar.
En el panel Integración del linaje de Knowledge Catalog, selecciona Inhabilitar la integración con el linaje de Knowledge Catalog.
Haz clic en Guardar.
gcloud
Usa el argumento --disable-cloud-data-lineage-integration.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-cloud-data-lineage-integration
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre de tu entorno.LOCATION: Es la región en la que se encuentra el entorno.
Ejemplo:
gcloud composer environments update example-environment \
--location us-central1 \
--disable-cloud-data-lineage-integration
Envía eventos de linaje en operadores compatibles
Si el linaje de datos está habilitado, los operadores compatibles envían eventos de linaje automáticamente. No es necesario que cambies el código DAG.
Por ejemplo, ejecutar la siguiente tarea:
task = BigQueryInsertJobOperator(
task_id='snapshot_task',
dag=dag,
location='<dataset-location>',
configuration={
'query': {
'query': 'SELECT * FROM dataset.tableA',
'useLegacySql': False,
'destinationTable': {
'project_id': 'example-project',
'dataset_id': 'dataset',
'table_id': 'tableB',
},
}
},
)
Da como resultado la creación del siguiente gráfico de linaje en la IU de Knowledge Catalog:
Envía eventos de linaje personalizados
Puedes enviar eventos de linaje personalizados si deseas informar el linaje de un operador que no es compatible con los informes de linaje automatizados.
Por ejemplo, para enviar eventos personalizados con lo siguiente:
- BashOperator: Modifica el parámetro
inletsooutletsen la definición de la tarea. - PythonOperator: Modifica el parámetro
task.inletsotask.outletsen la definición de la tarea. - Puedes usar
AUTOpara el parámetroinlets. Esto establece su valor igual a losoutletsde su tarea superior.
En el siguiente ejemplo, se muestra el uso de entradas y salidas:
from airflow.composer.data_lineage.entities import BigQueryTable
from airflow.lineage import AUTO
...
bash_task = BashOperator(
task_id="bash_task",
dag=dag,
bash_command="sleep 0",
inlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table1",
)
],
outlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table2",
)
],
)
def _python_task(task):
print("Python task")
python_task = PythonOperator(
task_id="python_task",
dag=dag,
python_callable=_python_task,
inlets=[
AUTO,
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table3",
),
],
outlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table4",
)
],
)
bash_task >> python_task
Como resultado, se crea el siguiente gráfico de linaje en la IU de Knowledge Catalog:
Visualiza registros de linaje en Managed Service para Apache Airflow
Puedes inspeccionar los registros relacionados con el linaje de datos mediante el vínculo en la página Configuración del entorno en la sección Integración del linaje de Knowledge Catalog.
Soluciona problemas
Si los datos de linaje no se informan a la API de Lineage o no puedes verlos en Knowledge Catalog, prueba los siguientes pasos para solucionar problemas:
- Asegúrate de que la API de Data Lineage esté habilitada en el proyecto de tu entorno de Managed Service para Apache Airflow.
- Verifica si la integración del linaje de datos está habilitada en el entorno de Managed Service para Apache Airflow.
- Verifica si el operador que usas está incluido en la compatibilidad con los informes de linaje automatizados. Para obtener más información, consulta Operadores de Airflow compatibles.
- Verifica los registros de linaje en Managed Service para Apache Airflow para detectar posibles problemas.