تبديد الغموض عن التقسيم في سبارك



تخبرك هذه المدونة بكل ما تحتاج لمعرفته حول التقسيم في Spark وأنواع الأقسام وكيف تعمل على تحسين سرعة التنفيذ للتحولات القائمة على المفاتيح.

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

سباركس مجموعات البيانات الموزعة المرنة (تجريد البرمجة) يتم تقييمه بتكاسل ويتم تخزين التحولات على شكل رسوم بيانية حلقية موجهة (DAG). لذا فإن كل إجراء على RDD سيجعل Spark يعيد حساب DAG. هذه هي الطريقة التي يتم بها تحقيق المرونة في Spark لأنه في حالة فشل أي عقدة عاملة ، فإن DAG يحتاج فقط إلى إعادة حسابه.





بل هو أيضا إلزامي للتخزين المؤقت (تستمر مع مستوى التخزين المناسب) RDD مثل الإجراءات المتكررة على RDD لا تجبر Spark على إعادة حساب DAG.الموضوعات التي يتم تناولها في هذه المدونة مطلوبة بشكل أساسي للحصول على شهادة Apache Spark و Scala. الموضوعات التي يتم تناولها في هذه المدونة مطلوبة بشكل أساسي لـ .

لماذا استخدام التقسيم؟

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



كيفية مزج البيانات في اللوحة

تستفيد التحويلات التي تتطلب خلط البيانات عبر عقد العاملين بشكل كبير من التقسيم. هذه التحولات cogroup ، groupWith ، Join ، leftOuterJoin ، rightOuterJoin ، groupByKey ، تقليل ByKey ، CombineByKey و ابحث عن .

تكون الأقسام قابلة للتكوين بشرط أن يكون RDD مستندًا إلى قيمة المفتاح.

خصائص التقسيم

  1. يتم ضمان وجود المجموعات الموجودة في نفس القسم في نفس الجهاز.
  2. يمكن أن تحتوي كل عقدة في الكتلة على أكثر من قسم واحد.
  3. إجمالي عدد الأقسام قابل للتكوين ، ويتم تعيينه افتراضيًا على إجمالي عدد النوى في جميع عقد المنفذ.

أنواع التقسيم في سبارك

يدعم Spark نوعين من التقسيم ،

  • تجزئة التقسيم : يستخدم لغة جافا Object.hashCode طريقة لتحديد القسم باسم القسم = key.hashCode ()٪ numPartitions.

hash-partitioning-demystifying-partitioning-in-spark



  • نطاق التقسيم : يستخدم نطاقًا لتوزيع المفاتيح التي تقع ضمن النطاق على الأقسام المعنية. هذه الطريقة مناسبة عندما يكون هناك ترتيب طبيعي في المفاتيح وتكون المفاتيح غير سلبية. يوضح مقتطف الشفرة أدناه استخدام مقسم النطاق.

مثال رمز

دعونا نرى مثالاً على كيفية تقسيم البيانات عبر عقد العاملين. كود Scala الكامل متاح هنا .

فيما يلي بعض بيانات الاختبار الخاصة بـ 12 إحداثيات (على شكل مجموعات) ،

يخترع org.apache.spark.HashPartitioner بحجم 2 ، حيث سيتم تقسيم المفاتيح عبر هذين القسمين بناءً على كود التجزئة الخاص بالمفاتيح.

ثم يمكننا فحص الأزواج وإجراء العديد من التحولات الرئيسية مثل foldByKey و تقليل

التلخيص ، التقسيم يحسن بشكل كبير من سرعة التنفيذ للتحولات القائمة على المفاتيح.

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

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

لماذا يجب أن تتعلم Spark بعد إتقان Hadoop

أباتشي سبارك مقابل Hadoop MapReduce