التحولات ذات الحالة مع الانغماس في تدفق شرارة



يناقش منشور المدونة هذا التحولات ذات الحالة مع النوافذ في Spark Streaming. تعرف على كل شيء عن تتبع البيانات عبر الدُفعات باستخدام state-ful D-Streams.

بمساهمة بريثفيراج بوس

سنناقش في هذه المدونة مفهوم النوافذ للتحولات ذات الحالة الخاصة في Apache Spark.





ما هو التحول ذو الحالة؟

يستخدم Spark Streaming بنية الدُفعات الصغيرة حيث يتم تجميع البيانات الواردة في مجموعات صغيرة تسمى Discretized Streams (DStreams) والتي تعمل أيضًا بمثابة تجريد أساسي للبرمجة. تحتوي DStreams داخليًا على مجموعات بيانات موزعة مرنة (RDD) ونتيجة لذلك يمكن إجراء تحويلات وإجراءات RDD القياسية.



في حالة البث إذا كانت لدينا حالة استخدام لتتبع البيانات عبر الدُفعات ، فإننا نحتاج إلى حالة DStreams كاملة.

على سبيل المثال ، قد نتتبع تفاعل المستخدم في موقع ويب أثناء جلسة المستخدم أو قد نتتبع علامة تصنيف Twitter معينة عبر الوقت ونرى المستخدمين في جميع أنحاء العالم الذين يتحدثون عن ذلك.

أنواع تحويل الحالة.



State-ful DStreams نوعان - التتبع المستند إلى النافذة والتتبع الكامل للجلسة.

لتتبع الحالة ، يجب تحويل جميع البيانات الواردة إلى أزواج ذات قيمة رئيسية بحيث يمكن تتبع الحالات الرئيسية عبر الدُفعات. هذا شرط مسبق.

علاوة على ذلك ، يجب علينا أيضًا تمكين نقاط التفتيش ، وهو مفهوم سنناقشه في المدونات اللاحقة.

> تتبع على أساس النافذة

في التتبع المستند إلى النافذة ، يتم تجميع الدُفعات الواردة في فترات زمنية ، أي دفعات المجموعة كل 'x' ثانية. يتم إجراء المزيد من العمليات الحسابية على هذه المجموعات باستخدام فترات الشرائح.

على سبيل المثال ، إذا كان الفاصل الزمني للنافذة = 3 ثوانٍ والفاصل الزمني للشريحة = 2 ثانية ، فسيتم تجميع جميع البيانات الواردة في مجموعات كل 3 ثوانٍ وستحدث العمليات الحسابية على هذه المجموعات كل ثانيتين. بدلاً من ذلك ، يمكننا القول ، قم بإجراء عمليات حسابية كل ثانيتين على الدُفعات التي وصلت في آخر 3 ثوانٍ.

spark-streaming-dstream-window

في الرسم البياني أعلاه ، نرى أن الدُفعات الواردة يتم تجميعها كل 3 وحدات زمنية (فاصل النافذة) ويتم إجراء الحسابات كل وحدتين من الوقت (فاصل الشريحة).
ملاحظة: على عكس Apache Flink ، لا يحتوي Apache Spark على مفهوم النافذة المتدحرجة ، فجميع النوافذ تنزلق.

نار

ضعف كثافة العمليات في جافا

واجهة برمجة التطبيقات الشائعة للتحولات القائمة على النوافذ هي

PairDStreamFunctions.reduceByKeyAndWindow .

هناك العديد من الإصدارات المحملة بشكل زائد من واجهة برمجة التطبيقات هذه ، دعنا نرى الإصدار الذي يحتوي على أكبر عدد من المعلمات. بعد هذا الشرح ، يجب أن تكون بقية الإصدارات المحملة بشكل زائد من واجهة برمجة التطبيقات هذه تفسيرية ذاتية.

العوائد: DStream المحول [(K، V)]

تقليل : وظيفة الاختزال الترابطية.

InvReduceFunc : عكس ما ورد أعلاه تقليل الوظيفة. هذا مطلوب من أجل الحوسبة الفعالة للدُفعات الواردة والصادرة. بمساعدة هذه الوظيفة ، يتم خصم قيمة الدُفعات الصادرة من القيمة المتراكمة لوظيفة التخفيض أعلاه. على سبيل المثال ، إذا كنا نقوم بحساب مجموع القيم الواردة للمفاتيح المعنية ، فسنطرح قيم المفاتيح ذات الصلة بالنسبة للدفعات الصادرة (بشرط أن تكون موجودة في الدفعة الحالية ، تجاهل آخر).

المدة : الوحدات الزمنية لتجميع الدُفعات ، يجب أن تكون مضاعفة الفاصل الزمني للدفعات.

المدة : الوحدات الزمنية للحساب ، يجب أن تكون مضاعفة الفاصل الزمني للدفعة. أقسام : المُقسم الذي سيتم استخدامه لتخزين DStream الناتج. لمزيد من المعلومات حول التقسيم اقرأ هذه .

عامل التصفية : وظيفة لتصفية أزواج المفتاح والقيمة منتهية الصلاحية ، على سبيل المثال ، إذا لم نحصل على تحديث لمفتاح لبعض الوقت ، فقد نرغب في إزالته.

هنا أ برنامج لعد الكلمات القادمة من تيار مأخذ. لقد استخدمنا نسخة محملة بشكل زائد من الوظيفة المذكورة أعلاه مع فاصل نافذة يبلغ 4 ثوانٍ وفاصل زمني للشريحة 2 ثانية.

في مدونتي التالية سأكتب عن التتبع الكامل للجلسة ونقاط التفتيش.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.

المنشورات ذات الصلة:

التخزين المؤقت الموزع مع متغيرات البث