اسمي جيمس روان ، وأنا طالب صاعد أدرس الرياضيات في معهد ماساتشوستس للتكنولوجيا. قضيت الصيف في العمل كمتدرب في فريق التحليلات في edX ، مع التركيز على خط أنابيب البيانات. يوفر فريق التحليلات البيانات والمقاييس لاستخدامها من قبل فرق الدورة التدريبية والباحثين والفرق الداخلية في edX. ركز عملي هذا الصيف على تحسين مستودع البيانات لدينا ، وهي قاعدة بيانات HP Vertica تُستخدم لإنشاء تقارير داخلية لفرق التسويق والتنفيذيين.
توسيع مخزن البيانات
مشروعي الأول كان لإضافة معلومات حول مجالات المواد الدراسية إلى مستودع البيانات. بينما سمح مخطط المستودع الأولي للمحللين بالاستعلام عن مقاييس التسجيل والنشاط على أساس دورة تدريبية ، لم تكن هناك طريقة لتجميع الدورات التدريبية ومقارنتها حسب مجال الموضوع. من شأن الحصول على معلومات منطقة موضوع الدورة التدريبية في المستودع أن يسمح لفريق التسويق بمعرفة المجالات التي تحتوي على أعلى معدلات الحصول على الشهادة التي تم التحقق منها ، على سبيل المثال ، في حين أن المحللين الآخرين سيكونون قادرين على السؤال عن أنماط المشاركة حسب مجال الموضوع (هل تميل دورات الرياضيات إلى رؤيتها كثير من المتعلمين يحاولون حل المشكلات ، بينما تتميز دورات العلوم الإنسانية باستخدام أكثر لمنتديات المناقشة؟).
لأداء هذه المهمة ، كنت بحاجة لمعرفة المزيد عنها أولاً لويجي، إطار عمل معالجة البيانات الذي يستخدمه خط أنابيب edX المفتوح. Luigi هو إطار عمل معالجة بيانات Python مفتوح المصدر تم تطويره بواسطة Spotify والذي يقسم سير عمل معالجة البيانات إلى سلسلة من المهام ، كل منها بمخرجاتها الخاصة ، بحيث يتم تبسيط معالجة التبعية ويمكن إعادة تشغيل مهام سير العمل بعد فشل الخطوات الوسيطة. تقودنا خاصية Luigi هذه إلى استهداف تدفقات العمل التي تكون معيارية قدر الإمكان.
يتكون سير عمل مجالات مواد الدورة التدريبية من ثلاثة أجزاء:
- اتصل ب كتالوج المقرر الدراسي API، والتي تحتوي على قائمة بجميع الدورات التي يتم تسويقها على الموقع ، إلى جانب معلومات مثل موضوعها (موادها) والمدرسين والمدة.
- قم بتحليل إخراج api إلى ملف قيم مفصولة بعلامات جدولة ، مع احتواء كل صف على معرف الدورة التدريبية ، ومنطقة موضوع الدورة التدريبية ، وبعض المعلومات الإضافية.
- قم بتحميل بيانات مجال الموضوع هذا في قاعدة بيانات Vertica.
تُرجمت المراحل الثلاث المتميزة من هذه العملية التي حددتها أعلاه بشكل طبيعي إلى مهام لويجي ، وكان أول مرحلتين واضحتين إلى حد ما للكتابة. الثالث كان أكثر إثارة للاهتمام. في حين أن Luigi لديه مهام مسبقة التحميل للتحميل في قواعد بيانات MySQL ، لم تكن هناك مهمة تحميل Vertica مسبقة الصنع ، لذلك كان علي أولاً إنشاء مهمة Luigi عامة للتحميل بالجملة من Vertica. شهد هذا اللودر العام استخدامه من قبل أعضاء الفريق الآخرين على مدار فصل الصيف ، وقد استمتعت بملكية هذا الجزء من خط الأنابيب ، والذي سيوفر البنية التحتية لسير العمل في المستقبل لزيادة توسيع مستودع التحليلات الداخلي لدينا.
يوضح الرسم البياني التالي مثالاً على سؤال يمكن للمحللين الإجابة عليه الآن بفضل هذا المشروع. يوضح النسبة المئوية للمتعلمين النشطين في الدورات على موقع edx.org الذين كانوا نشطين في دورات في مجالات مواضيع معينة. في خريف عام 2014 ، كان حوالي عشرة بالمائة من المتعلمين النشطين نشطين في دورات في كل من علوم الكمبيوتر والأعمال وتحليل البيانات والعلوم الإنسانية. ومع ذلك ، في عام 2015 ، كان لجزء أكبر بكثير من المتعلمين النشطين في الدورات التدريبية على edx.org نشاط في دورات علوم الكمبيوتر. في يونيو 2015 ، كان ما يقرب من نصف المتعلمين النشطين على موقع edx.org نشيطين في دورة في علوم الكمبيوتر! وشهدت مجالات الموضوعات الثلاثة الأخرى المعروضة أيضًا زيادة شعبية بين المستخدمين النشطين ، حيث ارتفعت إلى عشرين بالمائة لكل منها.

بعد مشروع المجالات الموضوعية ، عملت على ميزة تجريبية لتحليلات المنتج. يتم تسجيل جميع تفاعلات المستخدم مع النظام الأساسي ، من تشغيل مقاطع الفيديو إلى محاولة المشكلات إلى تحرير ملفات تعريف المستخدمين ، لتحليلها. إذا تمت إضافة ميزة جديدة وبدأت في إصدار أحداث ، فقد يرغب فريق المنتج في معرفة مدى تكرار استخدامها ، أو ما إذا كان يرى استخدامًا مرتفعًا بشكل غير متناسب على متصفحات سطح المكتب (مما يشير إلى وجود مشكلة في توافق الأجهزة المحمولة). بدلاً من الاضطرار إلى الانتظار حتى يقوم فريق التحليلات ببناء مسار عمل لتجميع معلومات سجل التتبع حول الميزة الجديدة ، يجب أن يكون المنتج والفرق الأخرى قادرة على إجراء تحليل أولي على سجلات الأحداث بأنفسهم.
تكمن الصعوبة في الاستعلام المباشر عن سجلات الأحداث في أن سجلات الأحداث شبه منظمة ، ويتم تخزينها بتنسيق JSON. نظرًا لأن الأنواع المختلفة من الأحداث لها سمات مختلفة ، فسيكون من الصعب محاولة إنشاء مخطط جدول واحد للأحداث ؛ بدلاً من ذلك ، استفدت من طاولات Vertica المرنة واختر مخطط جدول يحتوي على أعمدة ملموسة (أعمدة جدول SQL من الدرجة الأولى) للحقول المشتركة لجميع الأحداث أو جميعها تقريبًا (أشياء مثل اسم المستخدم والطابع الزمني ونوع جهاز المستخدم) مع السماح للمستخدمين بالاستعلام عن الحقول الخاصة بالحدث (أشياء مثل الطابع الزمني الذي ينتقل إليه شخص ما في مقطع فيديو). على الرغم من أننا لسنا متأكدين مما إذا كان هذا سيكون إطار عملنا لتحليلات المنتج في المستقبل ، فقد ساعدنا ذلك في استكشاف إمكانات مستودعاتنا.
دمج معالجة بيانات ذكاء الأعمال في خط الأنابيب
عندما بدأت العمل في edX هذا الصيف ، كان لدينا أساسًا خطان منفصلان للأنابيب: أحدهما للبيانات التي تواجه المعلم والمستخدمة في Insights (افتح لوحة تحليلات edX) وآخر لتقارير استخبارات الأعمال الداخلية (BI) الخاصة بنا. خط أنابيب البيانات الخارجية مكتوب بلغة Luigi ويتميز بوظائف Hadoop المجمعة لملء مخزن النتائج لـ API البيانات، بينما يستخدم خط الأنابيب لإعداد التقارير الداخلية Pentaho Data Integration لاستخراج البيانات من LMS ومخزن النتائج وتحويلها وتحميلها في المستودع. اعتمد خط أنابيب BI على بعض النتائج من خط الأنابيب الرئيسي ولكن لم يتمكن من توصيل هذه التبعيات إليه ، مما أجبر الفريق على تحديد توقيت تنفيذ المهام بعناية على خادم بناء Jenkins وهزيمة الغرض من استخدام Luigi لمعالجة التبعية في المقام الأول .

بنية خطوط التحليلات القديمة ، مع مسارين منفصلين لتدفق البيانات.
لتقليل الدين الفني الكامن في الحفاظ على نظامين ، تم تكليفي بمهمة البدء في نقل مهام Pentaho إلى مهام Luigi. بالإضافة إلى الفوائد الواضحة للانتقال إلى إطار عمل واحد لمعالجة البيانات ، فإن هذا التعهد يمهد الطريق أيضًا لمزيد من التحسينات في مستودع البيانات. نظرًا لأنه في هذه البنية الجديدة ، تتم جميع عمليات الكتابة إلى المستودع من خلال خط الأنابيب ، فإن مهام معالجة البيانات الجديدة (مثل مهمة مجالات موضوعات الدورة التدريبية أعلاه) ستكون قادرة على الكتابة إلى المستودع دون الحاجة إلى جدولتها يدويًا حول تحميل بيانات Pentaho خطوات. كما أن سير عمل معالجة البيانات الموحد سيجعل التحقق من صحة البيانات أسهل ؛ يمكن تضمين مهام التحقق من صحة البيانات في خطوات المعالجة ببساطة عن طريق إضافة مهام Luigi إلى خط الأنابيب الموحد.

تم الانتهاء من هندسة التحليلات الداخلية (BI) بعد تقاعد Pentaho.
سمح لي هذا المشروع بالعمل مع مجموعة التكنولوجيا الكاملة لخط الأنابيب. سنحت لي الفرصة لكتابة مهام تتفاعل مع قواعد بيانات MySQL LMS ، وسجلات تتبع الأحداث ، ومستودع النتائج الوسيطة Apache Hive ، ومستودع منتجات بيانات Vertica النهائي ، وكان استخدامًا رائعًا تتويجًا للمهارات التي اكتسبتها خلال مسار الصيف.
خاتمة
لقد استمتعت بالحصول على فرصة العمل في edX هذا الصيف. علمني هذا التدريب الداخلي عددًا من المهارات التقنية (إطار عمل Luigi ، ونموذج MapReduce ، و SQL ، و git) ، كما أن وجودي في فريق التحليلات مكّنني أيضًا من الحصول على خبرة مباشرة في تصميم هياكل معالجة البيانات ، وصيانة قواعد الرموز الكبيرة ، ودورة تطوير البرمجيات ومنتجات البيانات. إن تعلم العمل في سياق فريق رشيق هو أيضًا مهارة قابلة للتطبيق على نطاق واسع ، وقد قادني ذلك إلى التفكير بشكل أكثر وعياً في ديناميكيات المجموعة وإدارة المشاريع في بيئات غير العمل.
أود أن أشكر John Baker و Gabe Mulley و Brian Wilson على مساعدتي في الإجابة عن الأسئلة الفنية المتعلقة بخط الأنابيب ، وبقية فريق التحليلات لتوفير بيئة عمل رائعة ، وشكر أي شخص آخر في edX على جعل هذا الصيف ممتعًا.
![]()