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。