Sobre el proyecto
Luigi es un paquete de Python (probado en Python 3.10 a 3.14) para construir pipelines complejos de trabajos por lotes. Maneja la resolución de dependencias, la gestión de flujos de trabajo, la visualización, el manejo de fallos, la integración de línea de comandos y más.
La instalación se realiza a través de pip: `pip install luigi` para la última versión estable de PyPI, o `pip install luigi[toml]` para añadir soporte de configuración basado en TOML. El código más reciente se puede instalar directamente desde el repositorio de GitHub.
Antecedentes: Luigi aborda la "fontanería" típicamente asociada con los procesos por lotes de larga duración. Las tareas pueden ser cualquier cosa, pero comúnmente son trabajos de larga duración como trabajos de Hadoop, volcado de datos hacia o desde bases de datos, o ejecución de algoritmos de aprendizaje automático. Luigi no pretende reemplazar herramientas de procesamiento de datos de bajo nivel como Hive, Pig o Cascading; en cambio, une muchas tareas, donde cada tarea puede ser una consulta Hive, un trabajo Hadoop en Java, un trabajo Spark en Scala o Python, un fragmento de Python, un volcado de tabla de base de datos, o cualquier otra cosa. Admite la construcción de pipelines de larga duración que comprenden miles de tareas que tardan días o semanas en completarse.
Luigi viene con una caja de herramientas de plantillas de tareas comunes, incluido el soporte para trabajos mapreduce de Python en Hadoop, así como trabajos Hive y Pig. También proporciona abstracciones del sistema de archivos para HDFS y archivos locales que garantizan que las operaciones del sistema de archivos sean atómicas, por lo que un pipeline de datos no fallará en un estado que contenga datos parciales.
El servidor Luigi incluye una interfaz web para buscar y filtrar tareas, y el visualizador proporciona una visión general gráfica del grafo de dependencias de un flujo de trabajo, donde cada nodo representa una tarea a ejecutar y los colores indican tareas completadas frente a pendientes.
Filosofía: conceptualmente Luigi es similar a GNU Make, con tareas que pueden depender de otras tareas, y comparte algunas similitudes con Oozie y Azkaban. Una diferencia importante es que Luigi no está construido específicamente para Hadoop y puede extenderse con otros tipos de tareas. Todo está en Python: en lugar de configuración XML o archivos de datos externos similares, el grafo de dependencias se especifica dentro de Python, lo que facilita la construcción de grafos de dependencias complejos donde las dependencias pueden implicar álgebra de fechas o referencias recursivas a otras versiones de la misma tarea. Los flujos de trabajo aún pueden activar cosas fuera de Python, como ejecutar scripts Pig o copiar archivos.
Adopción: Luigi se utiliza internamente en Spotify para ejecutar miles de tareas cada día organizadas en complejos grafos de dependencias, en su mayoría trabajos de Hadoop, que impulsan recomendaciones, listas principales, análisis de pruebas A/B, informes externos y paneles internos. El README enumera muchas otras organizaciones que han escrito o presentado sobre Luigi, incluidas Foursquare, Stripe, Buffer, SeatGeek, Treasure Data, AdRoll, Groupon/OrderUp, Red Hat Marketing Operations, GetNinjas, voyages-sncf.com, Open Targets, Leipzig University Library, Glossier, Data Revenue, Uppsala University, GIPHY, xtream y CIAN, además de empresas adicionales que no han publicado al respecto. El número exacto de usuarios es desconocido ya que Luigi es de código abierto sin muros de registro.
Los enlaces externos incluyen una lista de correo de Google Groups para discusiones y preguntas, lanzamientos de PyPI, el código fuente de GitHub y un plugin de integración Hubot para Slack, Hipchat y servicios similares.
Autores: Luigi fue construido en Spotify, principalmente por Erik Bernhardsson y Elias Freider, con muchos otros colaboradores desde que se abrió el código fuente a finales de 2012. Arash Rouhani fue el principal mantenedor de 2015 a 2019, y el equipo de datos de Spotify mantiene Luigi actualmente.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.