这个项目能做什么
Luigi是一个Python包(已在Python 3.10至3.14上测试),用于构建复杂的批处理作业管道。它处理依赖解析、工作流管理、可视化、故障处理和命令行集成等。
通过pip安装:`pip install luigi` 从PyPI获取最新稳定版,或 `pip install luigi[toml]` 添加基于TOML的配置支持。最新开发版代码可直接从GitHub仓库安装。
背景:Luigi解决了与长时间运行的批处理流程相关的管道问题。任务可以是任何东西,但通常是长时间运行的作业,如Hadoop作业、向数据库或从数据库转储数据,或运行机器学习算法。Luigi并非旨在取代Hive、Pig或Cascading等底层数据处理工具;相反,它将许多任务拼接在一起,每个任务可以是Hive查询、Java编写的Hadoop作业、Scala或Python编写的Spark作业、Python代码片段、数据库表转储或任何其他内容。它支持构建包含数千个任务、需要数天或数周才能完成的长期运行管道。
Luigi附带一个常用任务模板工具箱,包括对Hadoop中Python mapreduce作业以及Hive和Pig作业的支持。它还提供HDFS和本地文件的文件系统抽象,确保文件系统操作是原子的,因此数据管道不会在包含部分数据的状态下崩溃。
Luigi服务器包含一个用于搜索和过滤任务的Web界面,可视化器提供工作流依赖关系的图形概览,其中每个节点代表要运行的任务,颜色表示已完成与待处理的任务。
理念:从概念上讲,Luigi类似于GNU Make,任务可能依赖其他任务,并与Oozie和Azkaban有一些相似之处。一个主要区别是Luigi并非专门为Hadoop构建,可以扩展以支持其他类型的任务。一切都用Python:依赖关系图在Python中指定,而不是使用XML配置或类似的外部数据文件,这使得构建复杂的依赖关系图变得容易,其中依赖关系可以涉及日期运算或对同一任务其他版本的递归引用。工作流仍然可以触发Python之外的操作,例如运行Pig脚本或scp文件。
采用情况:Luigi在Spotify内部使用,每天运行数千个任务,组织成复杂的依赖关系图,主要是Hadoop作业,为推荐、排行榜、A/B测试分析、外部报告和内部仪表板提供支持。README列出了许多其他已撰写或介绍过Luigi的组织,包括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和CIAN,以及其他未公开报道的公司。由于Luigi是开源且无需注册,确切用户数量未知。
外部链接包括用于讨论和提问的Google Groups邮件列表、PyPI发布版、GitHub源代码,以及用于Slack、Hipchat等服务的Hubot集成插件。
作者:Luigi由Spotify构建,主要由Erik Bernhardsson和Elias Freider开发,自2012年底开源以来有许多其他贡献者。Arash Rouhani在2015年至2019年期间担任首席维护者,现在由Spotify数据团队维护Luigi。
评论
0 评分人数达到10人后显示
登录后参与讨论。