Luigi-Luigi是一个Python模块,可帮助您构建复杂的批处理作业管道

Luigi是一个Python(经3.6、3.7、3.8、3.9测试)包,可帮助您构建复杂的批处理作业管道。它处理依赖项解析、工作流管理、可视化、处理故障、命令行集成等

快速入门

pip install luigi要从安装最新稳定版本,请执行以下操作PyPIDocumentation for the latest release托管在readthedocs上

pip install luigi[toml]要使用安装Luigi,请执行以下操作TOML-based configs支持

对于最尖端的代码,pip install
git+https://github.com/spotify/luigi.git
Bleeding edge documentation也是可用的

背景

Luigi的目的是解决通常与长时间运行的批处理过程相关的所有管道问题。您想要链接许多任务,使其自动化,并使其失败将要发生了。这些任务可以是任何任务,但通常是长时间运行的任务,如Hadoop作业、将数据转储到数据库或从数据库转储数据、运行机器学习算法或其他任何操作

还有其他软件包专注于数据处理的低级方面,例如HivePig,或CascadingLuigi不是取代这些的框架。相反,它可以帮助您将许多任务缝合在一起,其中每个任务都可以是Hive query,aHadoop job in Java,aSpark job in Scala or Python,一段Python代码片段,dumping a table从数据库或其他任何地方。很容易建立由数千项任务组成的长时间运行的管道,需要几天或几周的时间才能完成。Luigi负责大量的工作流管理,这样您就可以专注于任务本身及其依赖关系

您几乎可以构建任何您想要的任务,但是Luigi还附带了一个工具箱您使用的几个常见任务模板。它包括对运行的支持Python mapreduce jobs在Hadoop中,以及Hive,以及Pig、工作。它还附带了file system abstractions for HDFS,以及确保所有文件系统操作都是原子的本地文件。这一点很重要,因为这意味着您的数据管道在包含部分数据的状态下不会崩溃

可视化工具页面

路易吉服务器也有一个网络界面,这样你就可以在所有任务中搜索和过滤了

依赖关系图示例

为了让您了解Luigi做了什么,这是我们在生产中运行的内容的屏幕截图。使用Luigi的可视化工具,我们可以获得工作流依赖图的良好视觉概览。每个节点代表一个必须运行的任务。绿色任务已完成,而黄色任务尚未运行。这些任务大多是Hadoop作业,但也有一些任务在本地运行并构建数据文件

哲学

从概念上讲,Luigi类似于GNU
Make
其中您有特定的任务,而这些任务又可能依赖于其他任务。也有一些相似之处OozieAzkaban一个主要的区别是,Luigi不仅仅是专门为Hadoop构建的,而且很容易用其他类型的任务来扩展它

Luigi中的一切都是Python语言。指定依赖图,而不是XML配置或类似的外部数据文件在Python中这使得构建任务的复杂依赖关系图变得很容易,其中依赖关系可以涉及日期代数或对同一任务的其他版本的递归引用。但是,工作流可以触发非Python形式的内容,例如运行Pig scriptsscp’ing files

谁用路易吉?

我们在内部使用Luigi,地址为Spotify每天运行数千个任务,组织成复杂的依赖关系图。这些任务中的大多数都是Hadoop作业。Luigi提供了一个基础架构,可支持各种内容,包括建议、拓扑列表、A/B测试分析、外部报告、内部仪表板等

由于Luigi是开源的,没有任何注册墙,Luigi用户的确切数量不得而知。但基于独特贡献者的数量,我们预计将有数百家企业使用它。一些用户撰写了关于Luigi的博客帖子或举办了演示文稿:

一些更多的公司正在使用Luigi,但还没有机会写下这一点:

我们非常高兴在这里加入贵公司。只需在GitHub上发送公关

外部链接

作者

路易吉建于Spotify,主要由Erik BernhardssonElias FreiderMany other people自2012年末开源以来做出了贡献Arash Rouhani曾在2015年至2019年担任首席维护员,现在Spotify的数据团队维护Luigi