Luigi是一款基于Python语言而开发的开源数据流框架,我们可以通过Luigi免费版来解决批处理过程相关的所有管道问题,并且还可以进行工作流管理、可视化等多种简易操作哦!
Luigi 是一个 Python 模块,可以帮你构建复杂的批量作业管道。处理依赖决议、工作流管理、可视化展示等等,内建 Hadoop 支持。它也被Foursquare,Stripe,华尔街日报,Groupon和其他知名企业使用。
Luigi是基于代码的,而不是基于GUI或声明式的,包含Python中的所有内容(包括依赖关系图)。用户界面(UI)允许您搜索,过滤或监视每个任务的状态。您还可以查看该工作流程,以查看依赖关系图上的哪些任务已完成,哪些尚未运行。
Task
每一个任务都是一个Task,以class的形式存在,继承luigi.Task。需要重载requires()、run()、output()方法。
其中requires()是任务入口程序,指定任务依赖的上游输入;run()是任务在该节点具体实现的流程;output()是任务的出口,把该节点执行完之后的结果输出到下游。
Target
广义地讲,Target可对应为磁盘上的文件,或HDFS上文件,或checkpoint点,或数据库等。对于Target来说,唯一需要实现的方法为exists,返回为True表示存在,否则不存在返回为False. 在实际应用时,写一个Target子类是很少需要用到的。直接使用开箱即可用的LocalTarget及 hdfs.HdfsTarget类就够用了。Luigi提供了Gzip支持,通过参数format=format.Gzip即可。
parameter
parameter等效于luigi为task类创建构造函数,Luigi中提供了不同类型的parameter,例如DateParameter,DateIntervalParameter,IntParameter,FloatParameter等等。
python不是一个静态类型的语言,你不需要指定参数的类型,你可以直接使用基类Parameter。