DAG sin estrés: nuestra experiencia en el uso de metadatos con Apache Airflow

Apache Airflow es una herramienta orientada a lotes simple y conveniente para construir, planificar y monitorear canalizaciones de datos. Su característica clave es que al usar el código Python y los bloques de funciones incorporados, puede conectar muchas tecnologías diferentes utilizadas en el mundo moderno. La principal entidad de trabajo de Airflow (DAG) es un gráfico acíclico dirigido, en el que los nodos son tareas y las dependencias entre tareas están representadas por bordes dirigidos. 





Aquellos que usan Apache Airflow para organizar las tareas de carga de datos en el almacenamiento probablemente apreciarán la flexibilidad que proporciona para resolver tareas con plantillas. Cuando todo el proceso de desarrollo se reduce a completar un archivo de configuración con una descripción de los parámetros del DAG y una lista de tareas a realizar. En Leroy Merlin, este enfoque se utiliza con éxito para crear tareas para transferir datos desde la capa sin procesar a la capa de almacenamiento de ODS. Por ello, se decidió extenderlo a las tareas de llenado de data marts.  





La principal dificultad fue que aún no contamos con una metodología unificada para desarrollar data marts y procedimientos para completarlos. Y cada desarrollador resolvió el problema en función de sus preferencias y experiencia personales. Esto encaja en uno de los principales principios corporativos de TI: "Tú lo construyes, tú lo ejecutas", lo que significa que el desarrollador es responsable de su decisión y la respalda él mismo. Este principio es bueno para elaborar hipótesis rápidamente, pero para cosas del mismo tipo, la solución estándar es más adecuada. 





Como era

, . GreenPlum, DAG , GitHub, DAG Airflow . :





  1. Python Apache Airflow;





  2. , , DAG Airflow, ;





  3. ;





  4. DAG, , ;





  5. SQL- . , «» Airflow.





, . DAG- , , , , DummyOperator- PostgresOperator-. , , , :





  1. DAG- YAML, , -: , , , , . . YAML , API;





  2. , , ;





  3. , DAG- Airflow.





:





DAG:





:





  • module_name – DAG_ID;





  • pool – , ;





  • queue – ;





  • owner – DAG;





  • postgres_conn_id – ;





  • email – ;





  • tags – DAG UI;





  • access_control: DAG;





  • schedule_interval – DAG;





  • start_date catchup – , . Airflow . , start_date end_date ( ) , schedule_interval. catchup True, DAG start_date, False, ;





  • schema_name – , ;





  • task_list – DAG.





:





  • task_name – task_id Airflow





  • task_type –





  • task_schema_name - , ,





  • task_conn_id – ,





  • procedure_name –





  • params –





  • task_depends_on – ,





  • priority_weight –





  • task_concurrency - DAG





(task_type):





1) Dummy – DummyOperator. , , .





2) – PostgresOperator Airflow 





SQL-, :





3) – PostgresOperator( , ) 





:





  • task_multiply - 2 : "schema" "params".   schema", task_multiply_list SEARCH_PATH.                     "params", task_multiply_list params, 'task_multiply_list’





  • task_multiply_list  - ,





SQL-.





“schema”:





“params”:





:





DAG. Apache Airflow , - . 10-15. , , . : . DAG .








All Articles