برنامج Spark Streaming التعليمي - تحليل المشاعر باستخدام Apache Spark



ستقدم لك مدونة Spark Streaming هذه Spark Streaming وميزاتها ومكوناتها. يتضمن مشروع تحليل المشاعر باستخدام Twitter.

Spark Streaming هو امتداد لواجهة Spark API الأساسية التي تتيح معالجة دفق بيانات مباشرة قابلة للتطوير وعالية الإنتاجية وتتسامح مع الأخطاء. يمكن استخدام Spark Streaming لدفق البيانات الحية ويمكن أن تحدث المعالجة في الوقت الفعلي. تتكون قاعدة مستخدمي Spark Streaming المتزايدة باستمرار من أسماء عائلية مثل Uber و Netflix و Pinterest.

عندما يتعلق الأمر بتحليلات البيانات في الوقت الفعلي ، يوفر Spark Streaming نظامًا أساسيًا واحدًا لاستيعاب البيانات من أجل معالجة سريعة وحيوية يثبت مهارتك في نفس الشيء.من خلال هذه المدونة ، سأقدم لك هذا المجال المثير الجديد من Spark Streaming وسنمر في حالة استخدام كاملة ، تحليل المشاعر على تويتر باستخدام Spark Streaming.





فيما يلي المواضيع التي سيتم تناولها في هذه المدونة:

  1. ما هو الجري؟
  2. لماذا Spark Streaming؟
  3. نظرة عامة على Spark Streaming
  4. ميزات Spark Streaming
  5. أساسيات شرارة الجري
    5.1 سياق التدفق
    5.2 DStream
    5.3 التخزين المؤقت / الثبات
    5.4 المراكم ومتغيرات البث ونقاط التفتيش
  6. حالة الاستخدام - تحليل المشاعر على تويتر

ما هو الجري؟

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



ما هو الجري - شرارة الجري - Edurekaالشكل: ما هو الجري؟

لماذا Spark Streaming؟

يمكننا استخدام Spark Streaming لدفق البيانات في الوقت الفعلي من مصادر مختلفة مثل Twitter و Stock Market والأنظمة الجغرافية وإجراء تحليلات قوية لمساعدة الشركات.

الشكل: لماذا Spark Streaming؟



نظرة عامة على Spark Streaming

شرارة الجري يستخدم لمعالجة البيانات المتدفقة في الوقت الحقيقي. إنها إضافة مفيدة إلى Spark API الأساسية. يتيح Spark Streaming معالجة تدفق عالي الإنتاجية ومتسامح مع الأخطاء لتدفقات البيانات الحية.

الشكل: تيارات في شرارة الجري

وحدة الدفق الأساسية هي DStreamوهي عبارة عن سلسلة من RDDs لمعالجة البيانات في الوقت الفعلي.

ميزات Spark Streaming

  1. تحجيم: يمكن لـ Spark Streaming أن يتوسع بسهولة إلى مئات العقد.
  2. سرعة: أchieves منخفض الكمون.
  3. التسامح مع الخطأ: Spark لديه القدرة على البريدالتعافي بكفاءة من حالات الفشل.
  4. دمج: يتكامل Spark مع معالجة الدُفعات وفي الوقت الفعلي.
  5. تحليل الأعمال: شرارة الجري هو used لتتبع سلوك العملاء والتي يمكن استخدامها في تحليل الأعمال.

شرارة تدفق العمل

يحتوي سير عمل Spark Streaming على أربع مراحل عالية المستوى. الأول هو دفق البيانات من مصادر مختلفة. يمكن أن تكون هذه المصادر مصادر بيانات متدفقة مثل Akka أو Kafka أو Flume أو AWS أو Parquet للبث في الوقت الفعلي. النوع الثاني من المصادر يتضمن HBase و MySQL و PostgreSQL و Elastic Search و Mongo DB و Cassandra للبث الثابت / الدفعي. بمجرد حدوث ذلك ، يمكن استخدام Spark لأداء التعلم الآلي على البيانات من خلال MLlib API. علاوة على ذلك ، يتم استخدام Spark SQL لإجراء مزيد من العمليات على هذه البيانات. أخيرًا ، يمكن تخزين إخراج التدفق في أنظمة تخزين بيانات مختلفة مثل HBase و Cassandra و MemSQL و Kafka و Elastic Search و HDFS ونظام الملفات المحلي.

تحويل ثنائي إلى عشري جافا

الشكل: نظرة عامة على Spark Streaming

أساسيات شرارة الجري

  1. سياق التدفق
  2. DStream
  3. التخزين المؤقت
  4. المراكم ومتغيرات البث ونقاط التفتيش

سياق التدفق

سياق التدفق يستهلك دفقًا من البيانات في Spark. يسجل ملف أدخل DStream لإنتاج أ المتلقي موضوع. إنها نقطة الدخول الرئيسية لوظيفة Spark. يوفر Spark عددًا من التطبيقات الافتراضية لمصادر مثل Twitter و Akka Actor و ZeroMQ التي يمكن الوصول إليها من السياق.

يمكن إنشاء كائن StreamingContext من كائن SparkContext. يمثل SparkContext الاتصال بمجموعة Spark ويمكن استخدامه لإنشاء RDDs والمراكم ومتغيرات البث على تلك المجموعة.

import org.apache.spark._ import org.apache.spark.streaming._ var ssc = new StreamingContext (sc، Seconds (1))

DStream

تيار منفصل (DStream) هو التجريد الأساسي الذي يوفره Spark Streaming. إنه دفق مستمر من البيانات. يتم استلامه من مصدر بيانات أو تدفق بيانات معالج تم إنشاؤه عن طريق تحويل دفق الإدخال.

الشكل: استخراج الكلمات من Input DStream

داخليًا ، يتم تمثيل DStream بسلسلة مستمرة من RDDs ويحتوي كل RDD على بيانات من فاصل زمني معين.

إدخال DStreams: إدخال DStreams هي DStreams تمثل دفق بيانات الإدخال المستلمة من مصادر التدفق.

الشكل: يرسل جهاز الاستقبال البيانات إلى Input DStream حيث تحتوي كل دفعة على RDDs

يرتبط كل إدخال DStream بكائن استقبال يتلقى البيانات من المصدر ويخزنها في ذاكرة Spark للمعالجة.

التحولات على DStreams:

أي عملية مطبقة على DStream تترجم إلى عمليات على RDDs الأساسية. تسمح التحويلات بتعديل البيانات من إدخال DStream على غرار RDDs. تدعم DStreams العديد من التحولات المتاحة على Spark RDDs العادية.

الشكل: تحويلات DStream

فيما يلي بعض التحولات الشائعة على DStreams:

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

إخراج DStreams:

تسمح عمليات الإخراج بدفع بيانات DStream إلى أنظمة خارجية مثل قواعد البيانات أو أنظمة الملفات. تؤدي عمليات الإخراج إلى التنفيذ الفعلي لجميع تحويلات DStream.

الشكل: عمليات الإخراج على DStreams

التخزين المؤقت

د ستريمز السماح للمطورين بالتخزين المؤقت / الاحتفاظ ببيانات البث في الذاكرة. هذا مفيد إذا تم حساب البيانات الموجودة في DStream عدة مرات. يمكن القيام بذلك باستخدام ملف ثابر() طريقة على DStream.

الشكل: التخزين المؤقت في 2 عقد

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

المراكم ومتغيرات البث ونقاط التفتيش

المراكم: المراكم هي متغيرات يتم إضافتها فقط من خلال عملية ترابطية وتبادلية. يتم استخدامها لتنفيذ عدادات أو مبالغ. يمكن أن يكون تتبع المجمعات في واجهة المستخدم مفيدًا لفهم تقدم مراحل التشغيل. يدعم Spark أصلاً المراكم الرقمية. يمكننا إنشاء مركمات مسماة أو غير مسماة.

متغيرات البث: متغيرات البث السماح للمبرمج بالاحتفاظ بمتغير للقراءة فقط مؤقتًا على كل جهاز بدلاً من شحن نسخة منه مع المهام. يمكن استخدامها لإعطاء كل عقدة نسخة من مجموعة بيانات إدخال كبيرة بطريقة فعالة. تحاول Spark أيضًا توزيع متغيرات البث باستخدام خوارزميات البث الفعالة لتقليل تكلفة الاتصال.

نقاط تفتيش: نقاط تفتيش تشبه نقاط التفتيش في الألعاب. إنها تجعلها تعمل على مدار الساعة طوال أيام الأسبوع وتجعلها مرنة في مواجهة الإخفاقات غير المرتبطة بمنطق التطبيق.


الشكل:
ملامح نقاط التفتيش

حالة الاستخدام - تحليل المشاعر على تويتر

الآن بعد أن فهمنا المفاهيم الأساسية لـ Spark Streaming ، دعونا نحل مشكلة حقيقية باستخدام Spark Streaming.

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

تطبيقات تحليل المشاعر:

  • توقع نجاح الفيلم
  • توقع نجاح الحملة السياسية
  • تقرر ما إذا كنت تريد الاستثمار في شركة معينة
  • الإعلانات المستهدفة
  • مراجعة المنتجات والخدمات

تطبيق Spark Streaming:

تسلسل فيبوناتشي جافا للحلقة

ابحث عن الرمز الزائف أدناه:

// استيراد الحزم الضرورية إلى برنامج Spark. import org.apache.spark.streaming. {Seconds، StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : صفيف [سلسلة]) {إذا (args.length<4) { System.err.println('Usage: TwitterPopularTags ' + ' []') System.exit(1) } StreamingExamples.setStreamingLogLevels() //Passing our Twitter keys and tokens as arguments for authorization val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret) = args.take(4) val filters = args.takeRight(args.length - 4) // Set the system properties so that Twitter4j library used by twitter stream // Use them to generate OAuth credentials System.setProperty('twitter4j.oauth.consumerKey', consumerKey) ... System.setProperty('twitter4j.oauth.accessTokenSecret', accessTokenSecret) val sparkConf = new SparkConf().setAppName('twitterSentiment').setMaster('local[2]') val ssc = new Streaming Context val stream = TwitterUtils.createStream(ssc, None, filters) //Input DStream transformation using flatMap val tags = stream.flatMap { status =>احصل على نص من Hashtags} // تحويل RDD باستخدام sortBy ثم تعيين علامات الدالة .countByValue () .foreachRDD {rdd => val now = احصل على الوقت الحالي لكل تغريدة rdd .sortBy (_._ 2). الخريطة (x => (x، now)) // حفظ مخرجاتنا في ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // تحويل DStream باستخدام وظائف التصفية والخريطة val tweets = stream.filter {t => علامات val = t. انقسام على مسافات. مرشح (_. يبدأ بـ ('#')). التحويل إلى tags.exists بأحرف صغيرة {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. getText.toLowerCase) (status.getText، sentiment.toString، tagss.toString ())} data.print () // حفظ مخرجاتنا في ~ / بأسماء ملفات تبدأ مثل twitters data.saveAsTextFiles ('~ / twitters'، '20000') ssc. بدء () ssc.awaitTermination ()}}

النتائج:

فيما يلي النتائج التي يتم عرضها في Eclipse IDE أثناء تشغيل برنامج Twitter Sentiment Streaming.

الشكل: مخرجات تحليل المشاعر في Eclipse IDE

كما نرى في لقطة الشاشة ، يتم تصنيف جميع التغريدات إلى إيجابية وحيادية وسلبية وفقًا لمشاعر محتويات التغريدات.

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

ترتيب المصفوفات c ++

الشكل: مجلدات الإخراج داخل مجلد مشروع 'twitter'

هنا ، داخل دليل Twitter ، يمكننا العثور على أسماء مستخدمي Twitter جنبًا إلى جنب مع الطابع الزمني لكل تغريدة كما هو موضح أدناه:

الشكل: ملف الإخراج يحتوي على أسماء مستخدمي Twitter مع الطابع الزمني

الآن وقد حصلنا على أسماء مستخدمي Twitter والطابع الزمني ، فلنلقِ نظرة على المشاعر والتغريدات المخزنة في الدليل الرئيسي. هنا ، كل تغريدة تليها العاطفة. تُستخدم هذه المشاعر المخزنة أيضًا لتحليل عدد كبير من الرؤى من قبل الشركات.

الشكل: ملف الإخراج يحتوي على تغريدات مع المشاعر

كود التغيير والتبديل:

الآن ، دعنا نعدل الكود الخاص بنا قليلاً للحصول على مشاعر تجاه علامات تصنيف (مواضيع) محددة. حاليًا ، يتجه دونالد ترامب ، رئيس الولايات المتحدة عبر القنوات الإخبارية ووسائل التواصل الاجتماعي عبر الإنترنت. دعونا نلقي نظرة على المشاعر المرتبطة بالكلمة الرئيسية ' ورقة رابحة '.

الشكل: إجراء تحليل المشاعر على التغريدات باستخدام الكلمة الرئيسية 'ترامب'

المضي قدما:

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

قامت الشركات التي تستخدم Spark Streaming لتحليل المعنويات بتطبيق نفس النهج لتحقيق ما يلي:

  1. تعزيز تجربة العميل
  2. اكتساب ميزة تنافسية
  3. اكتساب ذكاء الأعمال
  4. تنشيط علامة تجارية خاسرة

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

نوصي ببرنامج Spark Streaming YouTube التعليمي التالي من Edureka للبدء به:

شرارة الجري | مثال على تحليل معنويات تويتر | إدوريكا

توفر سلسلة الفيديو هذه على Spark Tutorial خلفية كاملة للمكونات جنبًا إلى جنب مع حالات استخدام Real-Life مثل تحليل المشاعر على تويتر و تحليل تنبؤ لعبة NBA و نظام كشف الزلازل و تحليلات بيانات الطيران و أنظمة توصية الأفلام . لقد صممنا حالات الاستخدام شخصيًا لتوفير خبرة شاملة لأي شخص يقوم بتشغيل الكود.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك في أقرب وقت ممكن. إذا كنت ترغب في تعلم Spark وبناء مهنة في مجال Spark وبناء الخبرة لأداء معالجة البيانات على نطاق واسع باستخدام RDD و Spark Streaming و SparkSQL و MLlib و GraphX ​​و Scala مع حالات استخدام Real Life ، تحقق من تفاعلنا المباشر ، عبر الانترنت هنا، يأتي مع دعم 24 * 7 لإرشادك طوال فترة التعلم.