สนับสนุนโดย Prithviraj Bose
Spark เป็นเฟรมเวิร์กการประมวลผลคลัสเตอร์ที่รวดเร็วปานสายฟ้าที่ออกแบบมาเพื่อการคำนวณที่รวดเร็วและความต้องการสำหรับมืออาชีพ เป็นอย่างมากในตลาดปัจจุบันนี่คือ API ที่มีประสิทธิภาพใน Spark ซึ่งก็คือ combinationByKey .
มาตราส่วน API: org.apache.spark.PairRDDFunctions.combineByKey .
ความแตกต่างระหว่างการใช้งานและการขยาย java
Python API: pyspark.RDD.combineByKey .
API รับฟังก์ชั่นสามอย่าง (as นิพจน์แลมบ์ดา ใน Python หรือ ฟังก์ชันที่ไม่ระบุชื่อ ใน บันได ) กล่าวคือ
- สร้างฟังก์ชัน Combiner: x
- ฟังก์ชันผสานมูลค่า: y
- ผสานฟังก์ชัน combiners: z
และรูปแบบ API คือ CombinationByKey (x, y, z) .
มาดูตัวอย่างกัน (ใน Scala) สามารถหาแหล่งที่มาของ Scala แบบเต็มได้ ที่นี่ .
วัตถุประสงค์ของเราคือการหาคะแนนเฉลี่ยต่อนักเรียน
นี่คือคลาสตัวยึดตำแหน่ง ScoreDetail จัดเก็บชื่อนักเรียนพร้อมกับคะแนนของวิชา
ข้อมูลทดสอบบางส่วนถูกสร้างขึ้นและแปลงเป็นค่าคู่คีย์โดยที่ คีย์ = ชื่อนักเรียน และ value = ScoreDetail ตัวอย่าง.
จากนั้นเราจะสร้าง Pair RDD ตามที่แสดงในส่วนของรหัสด้านล่าง สำหรับการทดลองฉันได้สร้างแฮชพาร์ติชันขนาด 3 ดังนั้นพาร์ติชันทั้งสามจะมีคู่ค่าคีย์ 2, 2 และ 4 ตามลำดับ นี่คือไฮไลต์ในส่วนที่เราสำรวจแต่ละพาร์ติชัน
ตอนนี้เราสามารถสำรวจแต่ละพาร์ติชัน บรรทัดแรกจะพิมพ์ความยาวของแต่ละพาร์ติชัน (จำนวนคู่ค่าคีย์ต่อพาร์ติชัน) และบรรทัดที่สองจะพิมพ์เนื้อหาของแต่ละพาร์ติชัน
วิธีการแปลง double เป็น int java
และนี่คือความเคลื่อนไหวตอนจบที่เราคำนวณคะแนนเฉลี่ยต่อนักเรียนหลังจากรวมคะแนนในพาร์ติชัน
ขั้นตอนโค้ดด้านบนมีดังนี้ ...
ก่อนอื่นเราต้องสร้างฟังก์ชัน combiner ซึ่งโดยพื้นฐานแล้ว tuple = (ค่า, 1) สำหรับทุกคีย์ที่พบในแต่ละพาร์ติชัน หลังจากเฟสนี้เอาต์พุตสำหรับทุก ๆ (คีย์ค่า) ในพาร์ติชันคือ (คีย์ (ค่า 1))
จากนั้นในการทำซ้ำครั้งถัดไปฟังก์ชัน Combiner ต่อพาร์ติชันจะถูกรวมเข้าด้วยกันโดยใช้ฟังก์ชันผสานค่าสำหรับทุกคีย์ หลังจากเฟสนี้เอาต์พุตของทุก (คีย์ (ค่า 1)) คือ (คีย์ (รวมจำนวน)) ในทุกพาร์ติชัน
ในที่สุดฟังก์ชัน merge combiner จะรวมค่าทั้งหมดข้ามพาร์ติชันในตัวดำเนินการและส่งข้อมูลกลับไปยังไดรเวอร์ หลังจากขั้นตอนนี้ผลลัพธ์ของทุก ๆ (คีย์ (รวมจำนวน)) ต่อพาร์ติชันคือ
(คีย์ (totalAcrossAllPartitions, countAcrossAllPartitions))
แผนที่จะแปลงไฟล์
(คีย์ทูเพิล) = (คีย์ (totalAcrossAllPartitions countAcrossAllPartitions))
เพื่อคำนวณค่าเฉลี่ยต่อคีย์เป็น (key, tuple._1 / tuple._2)
หมายเลข fibonacci c ++
บรรทัดสุดท้ายจะพิมพ์คะแนนเฉลี่ยของนักเรียนทุกคนในตอนท้ายของพนักงานขับรถ
มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
กระทู้ที่เกี่ยวข้อง: