กลไกการทำความสะอาดข้อมูล Spark Streaming
(I) DStream และ RDD
อย่างที่ทราบกันดีว่า การประมวลผล Spark Streaming อาศัย Spark Core และแกนหลักของ Spark Core คือ RDD ดังนั้น Spark Streaming จึงต้องเชื่อมโยงกับ RDD ด้วย อย่างไรก็ตาม Spark Streaming ไม่อนุญาตให้ผู้ใช้ใช้ RDD โดยตรง แต่ได้สรุปแนวคิด DStream ไว้อย่างชัดเจน DStream และ RDD มีความสัมพันธ์แบบครอบคลุม คุณสามารถเข้าใจได้ว่าเป็นรูปแบบการตกแต่งใน Java กล่าวคือ DStream เป็นการเพิ่มประสิทธิภาพของ RDD แต่ลักษณะการทำงานจะคล้ายกับ RDD
ทั้ง DStream และ RDD มีเงื่อนไขหลายประการ
(1) มีการดำเนินการเปลี่ยนแปลงที่คล้ายคลึงกัน เช่น map, reduceByKey เป็นต้น แต่ยังมีการดำเนินการบางอย่างที่เป็นเอกลักษณ์ เช่น Window, mapWithStated เป็นต้น
(2) ทั้งหมดมีการดำเนินการ เช่น foreachRDD, count เป็นต้น
รูปแบบการเขียนโปรแกรมมีความสอดคล้องกัน
(B) การแนะนำ DStream ใน Spark Streaming
DStream มีหลายคลาส
(1) คลาสแหล่งข้อมูล เช่น InputDStream โดยเฉพาะอย่าง DirectKafkaInputStream เป็นต้น
(2) คลาสการแปลง โดยทั่วไปคือ MappedDStream, ShuffledDStream
(3) คลาสเอาต์พุต โดยทั่วไปเช่น ForEachDStream
จากข้างต้น ข้อมูลตั้งแต่จุดเริ่มต้น (อินพุต) จนถึงจุดสิ้นสุด (เอาท์พุต) จะดำเนินการโดยระบบ DStream ซึ่งหมายความว่าโดยปกติแล้ว ผู้ใช้ไม่สามารถสร้างและจัดการ RDD ได้โดยตรง ซึ่งหมายความว่า DStream มีโอกาสและภาระผูกพันในการรับผิดชอบต่อวงจรชีวิตของ RDD
กล่าวอีกนัยหนึ่ง Spark Streaming มีการล้างข้อมูลอัตโนมัติการทำงาน.
(iii) กระบวนการสร้าง RDD ใน Spark Streaming
การไหลของ RDD ใน Spark Streaming มีคร่าวๆ ดังนี้
(1) ใน InputDStream ข้อมูลที่ได้รับจะถูกแปลงเป็น RDD เช่น DirectKafkaInputStream ซึ่งสร้าง KafkaRDD
(2) จากนั้นผ่าน MappedDStream และการแปลงข้อมูลอื่น ๆ คราวนี้จะเรียก RDD โดยตรงที่สอดคล้องกับวิธีการแมปสำหรับการแปลง
(3) ในการดำเนินการคลาสเอาต์พุต เมื่อเปิดเผย RDD เท่านั้น คุณจึงสามารถให้ผู้ใช้ดำเนินการจัดเก็บข้อมูลที่เกี่ยวข้อง การคำนวณอื่นๆ และการดำเนินการอื่นๆ ได้