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. لويجي ليس إطارا ليحل محل هذه. بدلاً من ذلك، فهو يساعدك على ربط العديد من المهام معًا، حيث يمكن أن تكون كل مهمة عبارة عن استعلام Hive، أو وظيفة Hadoop في Java، أو وظيفة Spark في Scala أو Python، أو مقتطف Python، أو تفريغ جدول من قاعدة بيانات، أو أي شيء آخر. من السهل إنشاء مسارات طويلة الأمد تشتمل على آلاف المهام وتستغرق أيامًا أو أسابيع حتى تكتمل. يعتني لويجي بالكثير من إدارة سير العمل حتى تتمكن من التركيز على المهام نفسها وتبعياتها.
يمكنك إنشاء أي مهمة تريدها تقريبًا، لكن Luigi يأتي أيضًا مزودًا بصندوق أدوات يضم العديد من قوالب المهام الشائعة التي تستخدمها. يتضمن دعمًا لتشغيل وظائف Python Mapreduce في Hadoop، بالإضافة إلى وظائف Hive وPig. كما يأتي أيضًا مع تجريدات نظام الملفات لـ HDFS والملفات المحلية التي تضمن أن تكون جميع عمليات نظام الملفات ذرية. يعد هذا أمرًا مهمًا لأنه يعني أن مسار البيانات الخاص بك لن يتعطل في حالة تحتوي على بيانات جزئية.
يأتي خادم Luigi مزودًا بواجهة ويب أيضًا، حتى تتمكن من البحث والتصفية بين جميع مهامك.
فقط لإعطائك فكرة عما يفعله لويجي، هذه لقطة شاشة لشيء نقوم بتشغيله في الإنتاج. باستخدام مصور Luigi، نحصل على نظرة عامة مرئية رائعة للرسم البياني للتبعية لسير العمل. تمثل كل عقدة مهمة يجب تشغيلها. لقد اكتملت المهام الخضراء بالفعل بينما لم يتم تشغيل المهام الصفراء بعد. معظم هذه المهام هي وظائف Hadoop، ولكن هناك أيضًا بعض الأشياء التي يتم تشغيلها محليًا وإنشاء ملفات البيانات.
من الناحية النظرية، يشبه Luigi GNU Make حيث يكون لديك مهام معينة وهذه المهام بدورها قد تعتمد على مهام أخرى. هناك أيضًا بعض أوجه التشابه مع Oozie وAzkaban. أحد الاختلافات الرئيسية هو أن Luigi لم يتم تصميمه خصيصًا لـ Hadoop فحسب، ومن السهل توسيعه ليشمل أنواعًا أخرى من المهام.
كل شيء في لويجي موجود في بايثون. بدلاً من تكوين XML أو ملفات البيانات الخارجية المشابهة، يتم تحديد الرسم البياني للتبعية داخل Python . وهذا يجعل من السهل إنشاء رسوم بيانية تبعية معقدة للمهام، حيث يمكن أن تتضمن التبعيات جبر التاريخ أو مراجع متكررة لإصدارات أخرى من نفس المهمة. ومع ذلك، يمكن أن يؤدي سير العمل إلى تشغيل أشياء غير موجودة في Python، مثل تشغيل البرامج النصية Pig أو ملفات scp'ing.
نحن نستخدم Luigi داخليًا في Spotify لتشغيل آلاف المهام كل يوم، ويتم تنظيمها في رسوم بيانية تبعية معقدة. معظم هذه المهام هي وظائف Hadoop. يوفر Luigi بنية تحتية تعمل على تشغيل جميع أنواع الأشياء بما في ذلك التوصيات والقوائم العلوية وتحليل اختبار A/B والتقارير الخارجية ولوحات المعلومات الداخلية وما إلى ذلك.
نظرًا لأن Luigi مفتوح المصدر وبدون أي جدران تسجيل، فإن العدد الدقيق لمستخدمي Luigi غير معروف. ولكن بناءً على عدد المساهمين الفريدين، نتوقع أن تستخدمه مئات الشركات. قام بعض المستخدمين بكتابة منشورات على مدونة أو عقدوا عروض تقديمية حول لويجي:
تستخدم بعض الشركات الأخرى Luigi ولكن لم تتح لها الفرصة بعد للكتابة عنها:
نحن أكثر من سعداء بإضافة شركتك هنا. ما عليك سوى إرسال العلاقات العامة على GitHub.
تم إنشاء Luigi في Spotify، بشكل رئيسي بواسطة Erik Bernhardsson وElias Freider. وقد ساهم العديد من الأشخاص الآخرين منذ المصادر المفتوحة في أواخر عام 2012. وكان أراش روحاني هو المشرف الرئيسي من عام 2015 إلى عام 2019، والآن يتولى فريق بيانات Spotify صيانة Luigi.