Spark Streaming Tutorial - การวิเคราะห์ความรู้สึกโดยใช้ Apache Spark



บล็อก Spark Streaming นี้จะแนะนำให้คุณรู้จักกับ Spark Streaming คุณสมบัติและส่วนประกอบต่างๆ รวมถึงโครงการวิเคราะห์ความเชื่อมั่นโดยใช้ Twitter

Spark Streaming เป็นส่วนขยายของ Spark API หลักที่ช่วยให้สามารถปรับขนาดได้ปริมาณงานสูงการประมวลผลสตรีมข้อมูลสดที่ทนต่อข้อผิดพลาด Spark Streaming สามารถใช้เพื่อสตรีมข้อมูลสดและการประมวลผลสามารถเกิดขึ้นได้แบบเรียลไทม์ ฐานผู้ใช้ที่เติบโตอย่างต่อเนื่องของ Spark Streaming ประกอบด้วยชื่อครัวเรือนเช่น Uber, Netflix และ Pinterest

เมื่อพูดถึงการวิเคราะห์ข้อมูลแบบเรียลไทม์ Spark Streaming เป็นแพลตฟอร์มเดียวในการนำเข้าข้อมูลเพื่อการประมวลผลที่รวดเร็วและสดและ พิสูจน์ความสามารถของคุณในสิ่งเดียวกันในบล็อกนี้ฉันจะแนะนำให้คุณรู้จักกับโดเมนใหม่ที่น่าตื่นเต้นของ Spark Streaming และเราจะอธิบายถึงกรณีการใช้งานที่สมบูรณ์ การวิเคราะห์ความเชื่อมั่นของ Twitter โดยใช้ Spark Streaming





ต่อไปนี้เป็นหัวข้อที่จะกล่าวถึงในบล็อกนี้:

  1. Streaming คืออะไร?
  2. ทำไมต้อง Spark Streaming?
  3. ภาพรวมของ Spark Streaming
  4. คุณสมบัติ Spark Streaming
  5. Spark Streaming Fundamentals
    5.1 บริบทการสตรีม
    5.2 DStream
    5.3 แคช / ความคงอยู่
    5.4 ตัวสะสมตัวแปรการออกอากาศและจุดตรวจ
  6. Use Case - Twitter Sentiment Analysis

Streaming คืออะไร?

Data Streaming เป็นเทคนิคในการถ่ายโอนข้อมูลเพื่อให้สามารถประมวลผลเป็นสตรีมที่สม่ำเสมอและต่อเนื่อง เทคโนโลยีการสตรีมมีความสำคัญมากขึ้นตามการเติบโตของอินเทอร์เน็ต



สตรีมมิ่งคืออะไร - Spark Streaming - Edurekaรูป: Streaming คืออะไร?

ทำไมต้อง Spark Streaming?

เราสามารถใช้ Spark Streaming เพื่อสตรีมข้อมูลแบบเรียลไทม์จากแหล่งต่างๆเช่น Twitter ตลาดหุ้นและระบบทางภูมิศาสตร์และทำการวิเคราะห์ที่มีประสิทธิภาพเพื่อช่วยเหลือธุรกิจ

รูป: ทำไมต้อง Spark Streaming?



ภาพรวมของ Spark Streaming

Spark Streaming ใช้สำหรับประมวลผลข้อมูลสตรีมมิ่งแบบเรียลไทม์ เป็นส่วนเสริมที่มีประโยชน์สำหรับ Spark API หลัก Spark Streaming ช่วยให้สามารถประมวลผลสตรีมข้อมูลสดที่มีทรูพุตสูงและทนต่อข้อผิดพลาดได้

รูป: สตรีมใน Spark Streaming

หน่วยสตรีมพื้นฐานคือ DStreamซึ่งโดยพื้นฐานแล้วเป็นชุดของ RDD เพื่อประมวลผลข้อมูลแบบเรียลไทม์

คุณสมบัติ Spark Streaming

  1. การปรับขนาด: Spark Streaming สามารถปรับขนาดเป็นหลายร้อยโหนดได้อย่างง่ายดาย
  2. ความเร็ว: มันเป็นchieves เวลาแฝงต่ำ
  3. ค่าเผื่อความผิดพลาด: Spark มีความสามารถในการฟื้นตัวอย่างชาญฉลาดจากความล้มเหลว
  4. บูรณาการ: Spark ผสานรวมกับการประมวลผลแบบแบทช์และแบบเรียลไทม์
  5. การวิเคราะห์ธุรกิจ: Spark Streaming คือคุณsed เพื่อติดตามพฤติกรรมของลูกค้าซึ่งสามารถใช้ในการวิเคราะห์ธุรกิจ

เวิร์กโฟลว์ Spark Streaming

เวิร์กโฟลว์ Spark Streaming มีสี่ขั้นตอนระดับสูง ประการแรกคือการสตรีมข้อมูลจากแหล่งต่างๆ แหล่งข้อมูลเหล่านี้สามารถสตรีมแหล่งข้อมูลเช่น Akka, Kafka, Flume, AWS หรือ Parquet สำหรับการสตรีมแบบเรียลไทม์ แหล่งที่มาประเภทที่สอง ได้แก่ HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB และ Cassandra สำหรับการสตรีมแบบคงที่ / แบตช์ เมื่อสิ่งนี้เกิดขึ้นแล้ว Spark สามารถใช้เพื่อดำเนินการ Machine Learning กับข้อมูลผ่าน MLlib API นอกจากนี้ Spark SQL ยังใช้เพื่อดำเนินการเพิ่มเติมกับข้อมูลนี้ สุดท้ายเอาต์พุตสตรีมมิ่งสามารถจัดเก็บไว้ในระบบจัดเก็บข้อมูลต่างๆเช่น HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS และระบบไฟล์ในเครื่อง

รูป: ภาพรวมของ Spark Streaming

Spark Streaming Fundamentals

  1. บริบทการสตรีม
  2. DStream
  3. เก็บเอาไว้
  4. ตัวสะสมตัวแปรการออกอากาศและจุดตรวจ

บริบทการสตรีม

บริบทการสตรีม ใช้กระแสข้อมูลใน Spark มันลงทะเบียนไฟล์ อินพุต DStream เพื่อผลิต ผู้รับ วัตถุ. เป็นจุดเริ่มต้นหลักสำหรับฟังก์ชัน Spark Spark จัดเตรียมการใช้งานเริ่มต้นของแหล่งที่มาเช่น Twitter, Akka Actor และ ZeroMQ ที่เข้าถึงได้จากบริบท

สามารถสร้างวัตถุ StreamingContext จากวัตถุ SparkContext SparkContext แสดงถึงการเชื่อมต่อกับคลัสเตอร์ Spark และสามารถใช้เพื่อสร้าง RDDs, ตัวสะสมและตัวแปรออกอากาศบนคลัสเตอร์นั้น

php print_r เป็นสตริง
นำเข้า org.apache.spark._ import org.apache.spark.streaming._ var ssc = StreamingContext ใหม่ (sc, วินาที (1))

DStream

Discretized Stream (DStream) เป็นนามธรรมพื้นฐานที่จัดทำโดย Spark Streaming เป็นกระแสข้อมูลอย่างต่อเนื่อง ได้รับจากแหล่งข้อมูลหรือสตรีมข้อมูลที่ประมวลผลซึ่งสร้างขึ้นโดยการแปลงกระแสข้อมูลเข้า

รูป: การแยกคำจากอินพุต DStream

ภายใน DStream จะแสดงด้วยชุด RDD ที่ต่อเนื่องกันและแต่ละ RDD มีข้อมูลจากช่วงเวลาหนึ่ง

อินพุต DStreams: อินพุต DStreams DStreams เป็นตัวแทนของสตรีมข้อมูลอินพุตที่ได้รับจากแหล่งสตรีมมิ่ง

รูป: ผู้รับจะส่งข้อมูลไปยังอินพุต DStream โดยที่แต่ละชุดมี RDD

DStream อินพุตทุกรายการจะเชื่อมโยงกับวัตถุตัวรับซึ่งรับข้อมูลจากแหล่งที่มาและเก็บไว้ในหน่วยความจำของ Spark เพื่อประมวลผล

การเปลี่ยนแปลงบน DStreams:

การดำเนินการใด ๆ ที่ใช้กับ DStream จะแปลเป็นการดำเนินการบน RDD ที่อยู่ภายใต้ การแปลงทำให้ข้อมูลจากอินพุต DStream ถูกแก้ไขคล้ายกับ RDD DStreams รองรับการเปลี่ยนแปลงหลายอย่างที่มีอยู่ใน Spark RDD ปกติ

รูป: DStream Transformations

ต่อไปนี้คือการเปลี่ยนแปลงยอดนิยมบางส่วนใน DStreams:

แผนที่( func )แผนที่( func ) ส่งคืน DStream ใหม่โดยส่งผ่านแต่ละองค์ประกอบของ DStream ต้นทางผ่านฟังก์ชัน func.
แผนที่แบน ( func )แผนที่แบน ( func ) คล้ายกับแผนที่ ( func ) แต่แต่ละรายการอินพุตสามารถแมปกับรายการเอาต์พุต 0 หรือมากกว่าและส่งคืน DStream ใหม่โดยส่งองค์ประกอบต้นทางแต่ละรายการผ่านฟังก์ชัน func.
กรอง( func )กรอง( func ) ส่งคืน DStream ใหม่โดยเลือกเฉพาะระเบียนของ DStream ต้นทางที่ func คืนค่าจริง
ลด( func )ลด( func ) ส่งคืน DStream ใหม่ของ RDD แบบองค์ประกอบเดียวโดยการรวมองค์ประกอบในแต่ละ RDD ของ DStream ต้นทางโดยใช้ฟังก์ชัน func .
groupBy ( func )groupBy ( func ) ส่งคืน RDD ใหม่ซึ่งโดยพื้นฐานแล้วประกอบด้วยคีย์และรายการที่เกี่ยวข้องของกลุ่มนั้น

เอาต์พุต DStreams:

การดำเนินการเอาต์พุตอนุญาตให้ส่งข้อมูลของ DStream ออกไปยังระบบภายนอกเช่นฐานข้อมูลหรือระบบไฟล์ การดำเนินการเอาต์พุตทริกเกอร์การดำเนินการจริงของการแปลง DStream ทั้งหมด

รูป: การดำเนินการเอาต์พุตบน DStreams

เก็บเอาไว้

DStreams อนุญาตให้นักพัฒนาแคช / คงข้อมูลของสตรีมไว้ในหน่วยความจำ สิ่งนี้มีประโยชน์หากข้อมูลใน DStream จะถูกคำนวณหลายครั้ง ซึ่งสามารถทำได้โดยใช้ไฟล์ คงอยู่ () วิธีการบน DStream

รูป: แคชเป็น 2 โหนด

goto ใน c ++

สำหรับอินพุตสตรีมที่รับข้อมูลผ่านเครือข่าย (เช่น Kafka, Flume, Sockets เป็นต้น)ระดับการคงอยู่ดีฟอลต์ถูกตั้งค่าให้จำลองข้อมูลเป็นสองโหนดสำหรับการยอมรับความผิดพลาด

ตัวสะสมตัวแปรการออกอากาศและจุดตรวจ

ผู้สะสม: ผู้สะสม เป็นตัวแปรที่เพิ่มผ่านการดำเนินการเชื่อมโยงและสับเปลี่ยนเท่านั้น ใช้เพื่อใช้ตัวนับหรือผลรวม การติดตามตัวสะสมใน UI จะมีประโยชน์สำหรับการทำความเข้าใจความคืบหน้าของขั้นตอนการทำงาน Spark รองรับตัวสะสมตัวเลข เราสามารถสร้างตัวสะสมที่มีชื่อหรือไม่มีชื่อ

ตัวแปรการออกอากาศ: ตัวแปรออกอากาศ อนุญาตให้โปรแกรมเมอร์เก็บตัวแปรแบบอ่านอย่างเดียวที่แคชไว้ในแต่ละเครื่องแทนที่จะส่งสำเนาไปพร้อมกับงาน สามารถใช้เพื่อให้ทุกโหนดคัดลอกชุดข้อมูลอินพุตขนาดใหญ่อย่างมีประสิทธิภาพ นอกจากนี้ Spark ยังพยายามกระจายตัวแปรออกอากาศโดยใช้อัลกอริทึมการออกอากาศที่มีประสิทธิภาพเพื่อลดต้นทุนการสื่อสาร

จุดตรวจ: จุดตรวจ คล้ายกับจุดตรวจในเกม พวกเขาทำให้มันทำงานตลอด 24/7 และทำให้มันมีความยืดหยุ่นต่อความล้มเหลวที่ไม่เกี่ยวข้องกับตรรกะของแอปพลิเคชัน


รูป:
คุณสมบัติของจุดตรวจ

Use Case - Twitter Sentiment Analysis

ตอนนี้เราเข้าใจแนวคิดหลักของ Spark Streaming แล้วให้เราแก้ปัญหาในชีวิตจริงโดยใช้ Spark Streaming

คำชี้แจงปัญหา: ในการออกแบบระบบวิเคราะห์ความเชื่อมั่นของ Twitter ที่เราเติมข้อมูลความเชื่อมั่นแบบเรียลไทม์สำหรับการจัดการวิกฤตการปรับบริการและการตลาดเป้าหมาย

การประยุกต์ใช้การวิเคราะห์ความรู้สึก:

  • ทำนายความสำเร็จของภาพยนตร์
  • ทำนายความสำเร็จในการหาเสียงทางการเมือง
  • ตัดสินใจว่าจะลงทุนใน บริษัท ใด บริษัท หนึ่ง
  • การโฆษณาที่ตรงเป้าหมาย
  • ตรวจสอบผลิตภัณฑ์และบริการ

การใช้งาน Spark Streaming:

ค้นหารหัสหลอกด้านล่าง:

// อิมพอร์ตแพ็กเกจที่จำเป็นลงใน Spark Program import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : Array [String]) {if (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 =>รับข้อความจากแฮชแท็ก} // การแปลง RDD โดยใช้ sortBy แล้วแมปฟังก์ชัน tags.countByValue () .foreachRDD {rdd => val now = รับเวลาปัจจุบันของแต่ละทวีต rdd .sortBy (_._ 2) .map (x => (x ตอนนี้)) // บันทึกผลลัพธ์ของเราที่ ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // การแปลง DStream โดยใช้ตัวกรองและฟังก์ชั่นแผนที่ val tweets = stream.filter {t => แท็ก val = t. แยกบน Spaces .filter (_. beginWith ('#')) แปลงเป็นตัวพิมพ์เล็ก tag.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. start () ssc.awaitTermination ()}}

ผล:

ต่อไปนี้เป็นผลลัพธ์ที่แสดงใน Eclipse IDE ขณะรันโปรแกรม Twitter Sentiment Streaming

รูป: ผลลัพธ์การวิเคราะห์ความเชื่อมั่นใน Eclipse IDE

ดังที่เราเห็นในภาพหน้าจอทวีตทั้งหมดถูกแบ่งออกเป็นเชิงบวกเป็นกลางและเชิงลบตามความรู้สึกของเนื้อหาในทวีต

ผลลัพธ์ของ Sentiments of the Tweets จะถูกเก็บไว้ในโฟลเดอร์และไฟล์ตามเวลาที่สร้างขึ้น เอาต์พุตนี้สามารถเก็บไว้ในระบบไฟล์ภายในเครื่องหรือ HDFS ได้ตามความจำเป็น ไดเร็กทอรีเอาต์พุตมีลักษณะดังนี้:

รูป: โฟลเดอร์เอาต์พุตภายในโฟลเดอร์โครงการ 'twitter' ของเรา

ที่นี่ภายในไดเร็กทอรี twitter เราสามารถค้นหาชื่อผู้ใช้ของผู้ใช้ Twitter พร้อมกับการประทับเวลาสำหรับทุกทวีตดังที่แสดงด้านล่าง:

รูป: ไฟล์ผลลัพธ์ที่มีชื่อผู้ใช้ Twitter พร้อมการประทับเวลา

ตอนนี้เรามีชื่อผู้ใช้และการประทับเวลา Twitter แล้วให้เราดู Sentiments และทวีตที่เก็บไว้ในไดเร็กทอรีหลัก ที่นี่ทุกทวีตจะตามมาด้วยอารมณ์อ่อนไหว ความเชื่อมั่นนี้ถูกจัดเก็บไว้เพื่อใช้ในการวิเคราะห์ข้อมูลเชิงลึกจำนวนมากโดย บริษัท ต่างๆ

รูป: ไฟล์ผลลัพธ์ที่มีทวีตพร้อมความรู้สึก

รหัสการปรับแต่ง:

ตอนนี้ให้เราแก้ไขโค้ดของเราเล็กน้อยเพื่อรับความรู้สึกสำหรับแฮชแท็ก (หัวข้อ) ที่เฉพาะเจาะจง ปัจจุบันโดนัลด์ทรัมป์ประธานาธิบดีแห่งสหรัฐอเมริกากำลังได้รับความนิยมจากช่องข่าวและสื่อสังคมออนไลน์ ให้เราดูความรู้สึกที่เกี่ยวข้องกับคำหลัก ' ทรัมป์ ‘.

รูป: ทำการวิเคราะห์ความเชื่อมั่นในทวีตด้วยคีย์เวิร์ด 'Trump'

ก้าวไปข้างหน้า:

ดังที่เราได้เห็นจากการสาธิตการวิเคราะห์ความเชื่อมั่นเราสามารถดึงความรู้สึกของหัวข้อเฉพาะเช่นเดียวกับที่เราทำกับ 'ทรัมป์' ในทำนองเดียวกัน Sentiment Analytics สามารถใช้ในการจัดการวิกฤตการปรับบริการและกำหนดเป้าหมายทางการตลาดโดย บริษัท ต่างๆทั่วโลก

บริษัท ต่างๆที่ใช้ Spark Streaming สำหรับการวิเคราะห์ความรู้สึกได้ใช้แนวทางเดียวกันเพื่อบรรลุสิ่งต่อไปนี้:

  1. เพิ่มประสบการณ์ของลูกค้า
  2. ได้เปรียบในการแข่งขัน
  3. ได้รับ Business Intelligence
  4. ฟื้นฟูแบรนด์ที่สูญเสีย

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของสิ่งนี้ Spark Streaming Tutorial บล็อก ถึงตอนนี้คุณต้องมีความเข้าใจที่ดีว่า Spark Streaming คืออะไร กรณีการใช้งาน Twitter Sentiment Analysis จะช่วยให้คุณมีความมั่นใจในการทำงานในโครงการในอนาคตที่คุณพบใน Spark Streaming และ Apache Spark การฝึกฝนเป็นกุญแจสำคัญในการเรียนรู้เรื่องใด ๆ และฉันหวังว่าบล็อกนี้จะสร้างความสนใจให้คุณมากพอที่จะสำรวจเพิ่มเติมเกี่ยวกับ Apache Spark

เราขอแนะนำ Spark Streaming YouTube Tutorial จาก Edureka เพื่อเริ่มต้นด้วย:

Spark Streaming | ตัวอย่างการวิเคราะห์ความเชื่อมั่นของ Twitter | Edureka

วิดีโอชุดนี้ใน Spark Tutorial ให้พื้นหลังที่สมบูรณ์ในส่วนประกอบพร้อมกับกรณีการใช้งานในชีวิตจริงเช่น การวิเคราะห์ความเชื่อมั่นของ Twitter , การวิเคราะห์การทำนายเกม NBA , ระบบตรวจจับแผ่นดินไหว , การวิเคราะห์ข้อมูลเที่ยวบิน และ ระบบแนะนำภาพยนตร์ . เราได้ออกแบบกรณีการใช้งานเป็นการส่วนตัวเพื่อมอบความเชี่ยวชาญรอบด้านให้กับทุกคนที่ใช้โค้ด

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับโดยเร็วที่สุด หากคุณต้องการเรียนรู้ Spark และสร้างอาชีพในโดเมนของ Spark และสร้างความเชี่ยวชาญในการประมวลผลข้อมูลขนาดใหญ่โดยใช้ RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​และ Scala พร้อมกรณีการใช้งานในชีวิตจริงลองดูแบบโต้ตอบสดของเรา ออนไลน์ ที่นี่ ที่มาพร้อมกับการสนับสนุน 24 * 7 เพื่อแนะนำคุณตลอดระยะเวลาการเรียนรู้ของคุณ