تصنيف مشغلي الشرارة
من منظور عام ، يمكن تقسيم مشغلي الشرارة تقريبًا إلى الفئتين التاليتين:
1) عامل تحويل/تحويل التحويل: لا يؤدي هذا التحول إلى تقديم الوظيفة ويكمل معالجة العملية الوسيطة للمهمة.
عمليات التحول هي حسابات تأخر ، مما يعني أن عملية التحويل لإنشاء RDD آخر من تحويل RDD لا يتم تنفيذها على الفور. يتطلب الانتظار حتى تتوفر عملية عمل قبل تشغيل العملية.
2) مشغل الإجراء: سيؤدي هذا النوع من المشغل إلى قيام SparkContext بتقديم وظيفة الوظيفة.
سيؤدي مشغل الإجراءات إلى تشغيل وظيفة تقديم الشرارة (الوظيفة) وإخراج البيانات إلى نظام الشرارة.
من منظور صغير ، يمكن تقسيم مشغلي الشرارة تقريبًا إلى الفئات الثلاث التالية:
1) مشغل التحويل لنوع بيانات القيمة. هذا التحول لا يؤدي إلى تقديم الوظيفة. عناصر البيانات التي تمت معالجتها هي بيانات من نوع القيمة.
2) مشغل التحويل لنوع بيانات القيمة الرئيسية. هذا التحول لا يؤدي إلى تقديم الوظيفة. عناصر البيانات للمعالجة هي أزواج بيانات القيمة الرئيسية.
3) مشغل الإجراء ، سيؤدي هذا النوع من المشغل إلى تشغيل SparkContext لتقديم وظيفة الوظيفة.
مقدمة
عادة ما يكون من المريح كتابة برامج الشرارة مع Scala ، بعد كل شيء ، يتم كتابة رمز مصدر Spark في Scala. ومع ذلك ، هناك العديد من مطوري Java في الوقت الحاضر ، خاصةً عند استسلام البيانات والخدمات عبر الإنترنت. في هذا الوقت ، تحتاج إلى إتقان بعض طرق استخدام Spark في Java.
1. الخريطة
لا يمكن استخدام الخريطة بشكل متكرر عند معالجة البيانات وتحويلها
قبل استخدام الخريطة ، يجب أولاً تحديد تنسيق دالة تم تحويله على النحو التالي:
الوظيفة <string ، compledpoint> transform = new function <string ، compinpoint> () {// string هو نوع الإدخال لنقطة سطر معينة موضح بها نوع الإخراج المحول @Override Public Public Call (صف السلسلة) يلقي الاستثناء {// إعادة كتابة سلسلة الاتصال [] ROWARR = ROW.SPLIT ("،" ، ") ؛ int rowsize = rowarr.length ؛ Double [] DoubleArr = جديد مزدوج [Rowsize-1] ؛ // باستثناء أول lable ، يتم تحليل بقية الجزء في مزدوج ووضعه في الصفيف لـ (int i = 1 ؛ i <rowsize ؛ i ++) {string eary = rowarr [i] ؛ doublearr [i] = double.parsedouble (كل) ؛ } // قم بتحويل البيانات التي حصلت عليها للتو في ميزة متجه المتجه = Vectors.dense (doublearr) ؛ تسمية مزدوجة = double.parsedouble (Rowarr [0]) ؛ // إنشاء تنسيق البيانات لتصنيف تدريب Labelpoint Point = New LabeledPoint (التسمية ، الميزة) ؛ نقطة العودة }} ؛يجب إيلاء اهتمام خاص ل:
1. يجب أن يكون إدخال طريقة الاتصال هو نوع صف البيانات قبل التحويل. يجب أن تكون قيمة الإرجاع نوع صف البيانات بعد المعالجة.
2. إذا تم استدعاء فئة مخصصة في طريقة التحويل ، لاحظ أنه يجب تسلسل اسم الفصل ، على سبيل المثال
الطبقة العامة TreeenSemble تنفذ قابلة للتسلسل {}3. إذا تم استدعاء بعض كائنات الفئة في وظيفة التحويل ، مثل الطريقة التي تحتاج إلى استدعاء معلمة خارجية ، أو نموذج معالجة رقمي (التقييس ، التطبيع ، إلخ) ، يجب الإعلان عن الكائن النهائي.
ثم اتصل بوظيفة التحويل عند الاقتضاء
javardd <lessedPoint> rdd = oridata.tojavardd (). الخريطة (تحويل) ؛
تتطلب هذه الطريقة تحويل RDD العادي إلى Javardd للاستخدام. إن تشغيل التحويل إلى Javardd لا يستغرق وقتًا طويلاً ، لذلك لا تقلق
2. مرشح
كما أنه يستخدم بشكل شائع في سيناريوهات مثل تجنب القيم الخالية من البيانات و 0s ، ويمكنه تلبية وظائف المكان في SQL
بادئ ذي بدء ، نحن بحاجة إلى تحديد وظيفة. التأثير الفعلي لإرجاع قيمة منطقية بالنظر إلى خط البيانات هو الاحتفاظ بالبيانات التي يتم إرجاعها إلى TRUE.
الوظيفة <string ، boolean> booffilter = new function <string ، boolean> () {// string هو نوع الإدخال لخط معين. منطقية هو نوع الإخراج المقابل. تستخدم لتحديد ما إذا كان يتم الاحتفاظ بالبيانات. Override Public Boolean Call (سلسلة السلسلة) يلقي الاستثناء {// إعادة كتابة طريقة المكالمة العلم العودة }} ؛عادة ، ما يجب تعديله في الاستخدام الفعلي لهذه الوظيفة هو فقط نوع الصف ، أي نوع الإدخال لصف البيانات. على عكس وظيفة التحويل أعلاه ، يجب إصلاح قيمة إرجاع طريقة الاتصال هذه على أنها منطقية.
ثم طريقة الاتصال
javardd <balledPoint> rdd = oridata.tojavardd (). filter (booffilter) ؛
3. Maptopair
تشبه هذه الطريقة إلى حد ما طريقة الخريطة ، كما أنها تؤدي بعض التحويلات إلى البيانات. ومع ذلك ، فإن إخراج هذه الوظيفة هو خط إدخال tuple. الطريقة الأكثر استخدامًا هي القيام بالتحقق من صحة أو صحة الإحصاء لحساب استدعاء معدل الخطأ AUC ، إلخ.
وبالمثل ، تحتاج إلى تحديد وظيفة التحويل أولاً
الدالة <string ، boolean> transformer = new pairfunction <compledpoint ، object ، object> () {// compleedpoint هي الكائنين بعد نوع الإدخال. لا تقم بتغيير Override Public Tuple2 Call (صف المسمى) يلقي الاستثناء {// إعادة كتابة طريقة المكالمات عادة ما تغير معلمات الإدخال والإخراج فقط. لا تقم بتغيير predicton double = thisModel.Predict (row.features ()) ؛ تسمية مزدوجة = row.label () ؛ إرجاع tuple2 الجديد (Predicton ، label) ؛ }}) ؛فيما يتعلق بفئة الاتصال والكائن الفئة ، فإن المتطلبات تتفق مع السلطة السابقة. يحتاج الفصل إلى التسلسل ، ويجب إعلان كائن الفصل كنوع نهائي
المكالمات المقابلة هي كما يلي:
javapairrdd <object ، object> predictionsandlabels = oridata.maptopair (transformer) ؛
ثم ، لاستخدام التنبؤات ، وحساب الدقة ، والاستدعاء ، والدقة ، و AUC. سيكون هناك في المدونة التالية. من فضلك ترقبوا.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.