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 การดัมพ์ข้อมูลไปยัง/จากฐานข้อมูล การใช้อัลกอริธึม Machine Learning หรืออย่างอื่น
มีแพ็คเกจซอฟต์แวร์อื่นๆ ที่มุ่งเน้นไปที่การประมวลผลข้อมูลในระดับล่าง เช่น Hive, Pig หรือ Cascading ลุยจิไม่ใช่กรอบการทำงานที่จะมาแทนที่สิ่งเหล่านี้ แต่จะช่วยให้คุณรวมงานต่างๆ เข้าด้วยกัน โดยแต่ละงานอาจเป็นแบบสอบถาม Hive, งาน Hadoop ใน Java, งาน Spark ใน Scala หรือ Python, ตัวอย่างข้อมูล Python, การทิ้งตารางจากฐานข้อมูล หรือสิ่งอื่นใด เป็นเรื่องง่ายที่จะสร้างไปป์ไลน์ที่ใช้เวลานานซึ่งประกอบด้วยงานหลายพันรายการและใช้เวลาหลายวันหรือหลายสัปดาห์จึงจะเสร็จสมบูรณ์ Luigi ดูแลการจัดการเวิร์กโฟลว์จำนวนมาก เพื่อให้คุณสามารถมุ่งเน้นไปที่งานด้วยตนเองและการพึ่งพาของพวกเขา
คุณสามารถสร้างงานอะไรก็ได้ที่คุณต้องการ แต่ Luigi ยังมาพร้อมกับ กล่องเครื่องมือ ของเทมเพลตงานทั่วไปหลายแบบที่คุณใช้ รวมถึงการสนับสนุนสำหรับการรันงาน Python mapreduce ใน Hadoop รวมถึงงาน Hive และ Pig นอกจากนี้ยังมาพร้อมกับบทคัดย่อของระบบไฟล์สำหรับ HDFS และไฟล์ในเครื่องที่ช่วยให้มั่นใจได้ว่าการทำงานของระบบไฟล์ทั้งหมดเป็นแบบอะตอมมิก นี่เป็นสิ่งสำคัญเนื่องจากหมายความว่าไปป์ไลน์ข้อมูลของคุณจะไม่ขัดข้องในสถานะที่มีข้อมูลบางส่วน
เซิร์ฟเวอร์ Luigi มาพร้อมกับเว็บอินเตอร์เฟส ดังนั้นคุณจึงสามารถค้นหาและกรองงานทั้งหมดของคุณได้
เพียงเพื่อให้คุณเห็นภาพว่า Luigi ทำอะไรบ้าง นี่คือภาพหน้าจอจากสิ่งที่เรากำลังดำเนินการผลิต เมื่อใช้ Visualizer ของ Luigi เราจะได้ภาพรวมที่สวยงามของกราฟการพึ่งพาของเวิร์กโฟลว์ แต่ละโหนดแสดงถึงงานที่จะต้องดำเนินการ งานสีเขียวเสร็จสมบูรณ์แล้ว แต่งานสีเหลืองยังไม่ได้ดำเนินการ งานเหล่านี้ส่วนใหญ่เป็นงาน Hadoop แต่ก็มีบางสิ่งที่ทำงานในเครื่องและสร้างไฟล์ข้อมูลด้วย
ตามแนวคิดแล้ว Luigi นั้นคล้ายคลึงกับ GNU Make โดยที่คุณมีงานบางอย่าง และงานเหล่านี้ก็อาจต้องขึ้นอยู่กับงานอื่นด้วย นอกจากนี้ยังมีความคล้ายคลึงบางอย่างกับ Oozie และ Azkaban ข้อแตกต่างที่สำคัญประการหนึ่งคือ Luigi ไม่ได้สร้างขึ้นมาเพื่อ Hadoop โดยเฉพาะ และยังสามารถขยายออกไปพร้อมกับงานประเภทอื่นๆ ได้อย่างง่ายดาย
ทุกอย่างใน Luigi อยู่ใน Python แทนที่จะใช้การกำหนดค่า XML หรือไฟล์ข้อมูลภายนอกที่คล้ายกัน กราฟการพึ่งพาจะถูกระบุ ภายใน Python ซึ่งทำให้ง่ายต่อการสร้างกราฟการขึ้นต่อกันที่ซับซ้อนของงาน โดยที่การขึ้นต่อกันอาจเกี่ยวข้องกับพีชคณิตวันที่หรือการอ้างอิงแบบเรียกซ้ำไปยังเวอร์ชันอื่นของงานเดียวกัน อย่างไรก็ตาม เวิร์กโฟลว์สามารถทริกเกอร์สิ่งต่าง ๆ ที่ไม่ได้อยู่ใน Python ได้ เช่น การเรียกใช้สคริปต์ Pig หรือไฟล์ scp'ing
เราใช้ Luigi ภายในที่ Spotify เพื่อรันงานหลายพันรายการทุกวัน โดยจัดเรียงเป็นกราฟการขึ้นต่อกันที่ซับซ้อน งานเหล่านี้ส่วนใหญ่เป็นงาน Hadoop Luigi จัดเตรียมโครงสร้างพื้นฐานที่ขับเคลื่อนทุกสิ่ง รวมถึงคำแนะนำ รายการยอดนิยม การวิเคราะห์การทดสอบ A/B รายงานภายนอก แดชบอร์ดภายใน ฯลฯ
เนื่องจาก Luigi เป็นโอเพ่นซอร์สและไม่มีกำแพงการลงทะเบียนใดๆ จึงไม่ทราบจำนวนผู้ใช้ Luigi ที่แน่นอน แต่จากจำนวนผู้ร่วมให้ข้อมูลที่ไม่ซ้ำใคร เราคาดหวังให้องค์กรหลายร้อยแห่งใช้งาน ผู้ใช้บางคนเขียนบล็อกโพสต์หรือนำเสนอเกี่ยวกับ Luigi:
บริษัทอื่นๆ บางแห่งใช้ Luigi แต่ยังไม่มีโอกาสเขียนเกี่ยวกับเรื่องนี้:
เรายินดีเป็นอย่างยิ่งที่ได้เพิ่มบริษัทของคุณที่นี่ เพียงส่ง PR บน GitHub
Luigi สร้างขึ้นที่ Spotify โดย Erik Bernhardsson และ Elias Freider เป็นหลัก มีผู้คนอีกมากมายที่มีส่วนร่วมตั้งแต่เปิดแหล่งที่มาในช่วงปลายปี 2012 Arash Rouhani เป็นหัวหน้าผู้ดูแลตั้งแต่ปี 2015 ถึง 2019 และปัจจุบันทีมข้อมูลของ Spotify เป็นผู้ดูแล Luigi