À propos du projet

Luigi est un package Python (testé sur Python 3.10 à 3.14) pour construire des pipelines complexes de traitements par lots. Il gère la résolution des dépendances, la gestion des workflows, la visualisation, la gestion des erreurs, l'intégration en ligne de commande et plus encore. L'installation se fait via pip : `pip install luigi` pour la dernière version stable depuis PyPI, ou `pip install luigi[toml]` pour ajouter le support de la configuration basée sur TOML. Le code de pointe peut être installé directement depuis le dépôt GitHub. Contexte : Luigi s'occupe de la plomberie généralement associée aux processus batch de longue durée. Les tâches peuvent être n'importe quoi, mais sont généralement des jobs de longue durée comme des jobs Hadoop, l'extraction ou le chargement de données depuis ou vers des bases de données, ou l'exécution d'algorithmes de machine learning. Luigi n'a pas pour but de remplacer les outils de traitement de données de plus bas niveau comme Hive, Pig ou Cascading ; il assemble plutôt de nombreuses tâches, où chaque tâche peut être une requête Hive, un job Hadoop en Java, un job Spark en Scala ou Python, un extrait de code Python, un dump de table de base de données, ou autre chose. Il prend en charge la construction de pipelines de longue durée comprenant des milliers de tâches qui prennent des jours ou des semaines à terminer. Luigi est fourni avec une boîte à outils de modèles de tâches courants, y compris le support des jobs mapreduce Python dans Hadoop ainsi que des jobs Hive et Pig. Il fournit également des abstractions de systèmes de fichiers pour HDFS et les fichiers locaux qui garantissent que les opérations sur les fichiers sont atomiques, de sorte qu'un pipeline de données ne plante pas dans un état contenant des données partielles. Le serveur Luigi comprend une interface web pour rechercher et filtrer les tâches, et le visualiseur fournit une vue graphique du graphe de dépendances d'un workflow, où chaque nœud représente une tâche à exécuter et les couleurs indiquent les tâches terminées par rapport aux tâches en attente. Philosophie : conceptuellement, Luigi est similaire à GNU Make, avec des tâches qui peuvent dépendre d'autres tâches, et partage certaines similitudes avec Oozie et Azkaban. Une différence majeure est que Luigi n'est pas construit spécifiquement pour Hadoop et peut être étendu avec d'autres types de tâches. Tout est en Python : au lieu d'une configuration XML ou de fichiers de données externes similaires, le graphe de dépendances est spécifié en Python, ce qui facilite la construction de graphes de dépendances complexes où les dépendances peuvent impliquer de l'algèbre de dates ou des références récursives à d'autres versions de la même tâche. Les workflows peuvent toujours déclencher des choses en dehors de Python, comme exécuter des scripts Pig ou faire du scp de fichiers. Adoption : Luigi est utilisé en interne chez Spotify pour exécuter des milliers de tâches chaque jour organisées en graphes de dépendances complexes, principalement des jobs Hadoop, alimentant les recommandations, les toplists, l'analyse de tests A/B, les rapports externes et les tableaux de bord internes. Le README liste de nombreuses autres organisations qui ont écrit ou présenté des travaux sur Luigi, notamment 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 et CIAN, ainsi que d'autres entreprises qui n'ont pas publié à ce sujet. Le nombre exact d'utilisateurs est inconnu car Luigi est open source sans barrières d'inscription. Liens externes : une liste de diffusion Google Groups pour les discussions et questions, les versions PyPI, le code source GitHub, et un plugin d'intégration Hubot pour Slack, Hipchat et services similaires. Auteurs : Luigi a été construit chez Spotify, principalement par Erik Bernhardsson et Elias Freider, avec de nombreux autres contributeurs depuis son passage en open source fin 2012. Arash Rouhani a été le mainteneur principal de 2015 à 2019, et l'équipe Data de Spotify maintient désormais Luigi.