สนับสนุนโดย Prithviraj Bose
ในบล็อกนี้เราจะพูดถึงแนวคิดเกี่ยวกับหน้าต่างของการเปลี่ยนแปลงสถานะของ Apache Spark
การเปลี่ยนแปลงสถานะคืออะไร?
สตรีมมิ่ง Spark ใช้สถาปัตยกรรมแบบไมโครแบตช์ที่ข้อมูลขาเข้าถูกจัดกลุ่มเป็นไมโครแบตช์ที่เรียกว่า Discretized Streams (DStreams) ซึ่งทำหน้าที่เป็นนามธรรมการเขียนโปรแกรมพื้นฐาน DStreams ภายในมี Resilient Distributed Datasets (RDD) และเป็นผลมาจากการแปลง RDD มาตรฐานและการดำเนินการนี้สามารถทำได้
ในการสตรีมหากเรามีกรณีการใช้งานเพื่อติดตามข้อมูลระหว่างแบทช์เราก็จำเป็นต้องมีสตรีม DStream ที่มีสถานะครบถ้วน
ตัวอย่างเช่นเราอาจติดตามการโต้ตอบของผู้ใช้ในเว็บไซต์ระหว่างเซสชันของผู้ใช้หรือเราอาจติดตามแฮชแท็ก twitter เฉพาะในช่วงเวลาหนึ่งและดูว่าผู้ใช้รายใดทั่วโลกกำลังพูดถึงเรื่องนี้
ประเภทของการเปลี่ยนแปลงสถานะเต็ม
DStream ที่เต็มไปด้วยสถานะมีสองประเภทคือการติดตามตามหน้าต่างและการติดตามเซสชันแบบเต็ม
สำหรับการติดตามสถานะข้อมูลขาเข้าทั้งหมดควรเปลี่ยนเป็นคู่คีย์ - ค่าเพื่อให้สามารถติดตามสถานะคีย์ข้ามแบตช์ได้ นี่เป็นเงื่อนไขเบื้องต้น
นอกจากนี้เราควรเปิดใช้งานการตรวจสอบซึ่งเป็นแนวคิดที่เราจะพูดถึงในบล็อกต่อไป
> การติดตามตามหน้าต่าง
ในการติดตามตามหน้าต่างกลุ่มที่เข้ามาจะถูกจัดกลุ่มตามช่วงเวลานั่นคือกลุ่มแบตช์ทุกๆ 'x' วินาที การคำนวณเพิ่มเติมเกี่ยวกับแบทช์เหล่านี้ทำได้โดยใช้ช่วงเวลาสไลด์
java ผนวกทำอะไร
ตัวอย่างเช่นถ้าช่วงเวลาของหน้าต่าง = 3 วินาทีและช่วงเวลาสไลด์ = 2 วินาทีข้อมูลที่เข้ามาทั้งหมดจะถูกจัดกลุ่มเป็นกลุ่มทุกๆ 3 วินาทีและการคำนวณในแบทช์เหล่านี้จะเกิดขึ้นทุกๆ 2 วินาที หรือเราสามารถพูดได้ว่าทำการคำนวณทุกๆ 2 วินาทีในแบทช์ที่มาถึงในช่วง 3 วินาทีที่ผ่านมา
ในแผนภาพด้านบนเราจะเห็นว่ากลุ่มงานที่เข้ามาจะถูกจัดกลุ่มทุกๆ 3 หน่วยของเวลา (ช่วงเวลาหน้าต่าง) และการคำนวณจะทำทุกๆ 2 หน่วยของเวลา (ช่วงเวลาสไลด์)
หมายเหตุ: แตกต่างจาก Apache Flink Apache Spark ไม่มีแนวคิดเรื่องหน้าต่างไม้ลอยหน้าต่างทั้งหมดจะเลื่อน
ไฟ
API ยอดนิยมสำหรับการแปลงตามหน้าต่างคือ
PairDStreamFunctions.reduceByKeyAndWindow .
API นี้มีหลายเวอร์ชันที่ใช้งานมากเกินไปเรามาดูเวอร์ชันที่มีพารามิเตอร์จำนวนมากที่สุด หลังจากคำอธิบายนี้ส่วนที่เหลือของ API นี้ควรอธิบายด้วยตนเอง
ผลตอบแทน: DStream ที่เปลี่ยนรูปแล้ว [(K, V)]
ลดความสนุก : ฟังก์ชันลดการเชื่อมโยง
invReduceFunc : ค่าผกผันของฟังก์ชันลดข้างต้น สิ่งนี้จำเป็นสำหรับการคำนวณแบตช์ขาเข้าและขาออกอย่างมีประสิทธิภาพ ด้วยความช่วยเหลือของฟังก์ชันนี้ค่าของชุดงานที่ส่งออกจะถูกหักออกจากมูลค่าสะสมของฟังก์ชันลดข้างต้น ตัวอย่างเช่นหากเรากำลังคำนวณผลรวมของค่าขาเข้าสำหรับคีย์ที่เกี่ยวข้องจากนั้นสำหรับแบตช์ขาออกเราจะลบค่าสำหรับคีย์ที่เกี่ยวข้อง (หากมีอยู่ในแบตช์ปัจจุบันอื่นจะไม่สนใจ)
windowDuration : หน่วยของเวลาในการจัดกลุ่มแบตช์ซึ่งควรเป็นหลายช่วงของช่วงแบตช์
slideDuration : หน่วยเวลาในการคำนวณค่านี้ควรเป็นผลคูณของช่วงเวลาแบทช์ พาร์ติชัน : ตัวแบ่งพาร์ติชันที่จะใช้สำหรับเก็บ DStream ที่เป็นผลลัพธ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแบ่งพาร์ติชันอ่าน นี้ .
filterFunc : ฟังก์ชั่นกรองคู่คีย์ - ค่าที่หมดอายุเช่นหากเราไม่ได้รับการอัปเดตสำหรับคีย์ในบางครั้งเราอาจต้องการลบออก
นี่คือไฟล์ โปรแกรม เพื่อนับคำที่มาจากซ็อกเก็ตสตรีม เราได้ใช้ฟังก์ชันข้างต้นในเวอร์ชันที่โอเวอร์โหลดโดยมีช่วงหน้าต่าง 4 วินาทีและช่วงเวลาสไลด์ 2 วินาที
ในบล็อกถัดไปฉันจะเขียนเกี่ยวกับการติดตามและตรวจสอบเซสชันแบบเต็ม
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
กระทู้ที่เกี่ยวข้อง: