Luigi 是一個 Python(3.7、3.8、3.9、3.10、3.11、3.12 測試)包,可協助您建立複雜的批次作業管道。它處理依賴性解析、工作流程管理、視覺化、處理故障、命令列整合等等。
運行pip install luigi
從 PyPI 安裝最新的穩定版本。最新版本的文件託管在 readthedocs 上。
執行pip install luigi[toml]
來安裝 Luigi,並提供基於 TOML 的設定支援。
對於前沿程式碼, pip install git+https://github.com/spotify/luigi.git
。也提供最先進的文件。
Luigi 的目的是解決通常與長時間運行的批次流程相關的所有問題。您想要連結許多任務並使其自動化,那麼失敗就會發生。這些任務可以是任何任務,但通常是長時間運行的任務,例如 Hadoop 作業、將資料轉儲到資料庫或從資料庫轉儲資料、執行機器學習演算法或其他任何任務。
還有其他軟體包專注於資料處理的較低層級方面,例如 Hive、Pig 或 Cascading。 Luigi 並不是一個可以取代這些的框架。相反,它可以幫助您將許多任務拼接在一起,其中每個任務可以是 Hive 查詢、Java 中的 Hadoop 作業、Scala 或 Python 中的 Spark 作業、Python 程式碼片段、從資料庫轉儲表或其他任何任務。建立包含數千個任務並需要數天或數週才能完成的長期運行的管道很容易。 Luigi 負責許多工作流程管理,以便您可以專注於任務本身及其依賴關係。
您幾乎可以建立任何您想要的任務,但 Luigi 還附帶了一個工具箱,其中包含您使用的幾個常見任務範本。它支援在 Hadoop 中執行 Python mapreduce 作業,以及 Hive 和 Pig 作業。它還附帶 HDFS 的檔案系統抽象,以及確保所有檔案系統操作都是原子的本機檔案。這很重要,因為這意味著您的資料管道不會在包含部分資料的狀態下崩潰。
Luigi 伺服器還附帶一個 Web 介面,因此您可以在所有任務中搜尋和過濾。
只是為了讓您了解 Luigi 所做的事情,這是我們在生產中運行的螢幕截圖。使用 Luigi 的視覺化工具,我們可以很好地直觀地了解工作流程的依賴關係圖。每個節點代表一個必須運行的任務。綠色任務已完成,黃色任務尚未運作。這些任務大多數是 Hadoop 作業,但也有一些在本地運行並建立資料檔案。
從概念上講,Luigi 類似於 GNU Make,其中您有某些任務,而這些任務可能依賴其他任務。與 Oozie 和 Azkaban 也有一些相似之處。一個主要區別是 Luigi 不僅僅是專門為 Hadoop 構建的,而且可以輕鬆地將其擴展為其他類型的任務。
Luigi 中的一切都是用 Python 寫的。依賴圖是在 Python 中指定的,而不是 XML 配置或類似的外部資料檔案。這使得建立複雜的任務依賴關係圖變得容易,其中依賴關係可能涉及日期代數或對同一任務的其他版本的遞歸引用。但是,工作流程可以觸發 Python 以外的操作,例如執行 Pig 腳本或 scp 檔案。
我們在 Spotify 內部使用 Luigi 每天運行數千個任務,這些任務以複雜的依賴關係圖組織。這些任務大部分是 Hadoop 作業。 Luigi 提供了一個支援各種內容的基礎設施,包括推薦、熱門清單、A/B 測試分析、外部報告、內部儀表板等。
由於 Luigi 是開源的並且沒有任何註冊牆,因此 Luigi 用戶的確切數量未知。但根據獨特貢獻者的數量,我們預計將有數百家企業使用它。一些用戶撰寫了有關 Luigi 的部落格文章或舉辦了演示:
還有一些公司正在使用 Luigi,但還沒有機會寫下它:
我們非常高興將您的公司添加到此處。只需在 GitHub 上發送 PR 即可。
Luigi 是在 Spotify 開發的,主要由 Erik Bernhardsson 和 Elias Freider 開發。自 2012 年底開源以來,許多其他人都做出了貢獻。