Apache Spark รวม ByKey อธิบาย



บล็อก Spark Hadoop นี้จะบอกทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Apache Spark combinationByKey หาคะแนนเฉลี่ยต่อนักเรียนโดยใช้วิธีการรวมByKey

สนับสนุนโดย Prithviraj Bose

Spark เป็นเฟรมเวิร์กการประมวลผลคลัสเตอร์ที่รวดเร็วปานสายฟ้าที่ออกแบบมาเพื่อการคำนวณที่รวดเร็วและความต้องการสำหรับมืออาชีพ เป็นอย่างมากในตลาดปัจจุบันนี่คือ API ที่มีประสิทธิภาพใน Spark ซึ่งก็คือ combinationByKey .





มาตราส่วน API: org.apache.spark.PairRDDFunctions.combineByKey .

ความแตกต่างระหว่างการใช้งานและการขยาย java

Python API: pyspark.RDD.combineByKey .



API รับฟังก์ชั่นสามอย่าง (as นิพจน์แลมบ์ดา ใน Python หรือ ฟังก์ชันที่ไม่ระบุชื่อ ใน บันได ) กล่าวคือ

  1. สร้างฟังก์ชัน Combiner: x
  2. ฟังก์ชันผสานมูลค่า: y
  3. ผสานฟังก์ชัน combiners: z

และรูปแบบ API คือ CombinationByKey (x, y, z) .

มาดูตัวอย่างกัน (ใน Scala) สามารถหาแหล่งที่มาของ Scala แบบเต็มได้ ที่นี่ .



วัตถุประสงค์ของเราคือการหาคะแนนเฉลี่ยต่อนักเรียน

นี่คือคลาสตัวยึดตำแหน่ง ScoreDetail จัดเก็บชื่อนักเรียนพร้อมกับคะแนนของวิชา

Scoredetail-spark-combinebykey

ข้อมูลทดสอบบางส่วนถูกสร้างขึ้นและแปลงเป็นค่าคู่คีย์โดยที่ คีย์ = ชื่อนักเรียน และ 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 ++

บรรทัดสุดท้ายจะพิมพ์คะแนนเฉลี่ยของนักเรียนทุกคนในตอนท้ายของพนักงานขับรถ

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

กระทู้ที่เกี่ยวข้อง:

Demystifying Partitioning ใน Spark