Apache Spark menggabungkanByKey Explained



Blog Spark Hadoop ini memberi tahu Anda semua yang perlu Anda ketahui tentang Apache Spark CombineByKey. Temukan skor rata-rata per siswa menggunakan metode CombinedByKey.

Kontribusi Prithviraj Bose

Spark adalah kerangka kerja komputasi klaster secepat kilat yang dirancang untuk komputasi cepat dan permintaan profesional dengan substansial di pasar saat ini.Berikut adalah API yang kuat di Spark yaitu CombineByKey .





Skala API: org.apache.spark.PairRDDFunctions.combineByKey .

Python API: pyspark.RDD.combineByKey .



API mengambil tiga fungsi (sebagai ekspresi lambda di Python atau fungsi anonim di Tangga ), yaitu,

  1. Buat fungsi penggabung: x
  2. Fungsi nilai gabungan: y
  3. Gabungkan fungsi penggabung: z

dan format API adalah menggabungkanByKey (x, y, z) .

Mari kita lihat contoh (di Scala). Sumber lengkap Scala dapat ditemukan sini .



Tujuan kami adalah menemukan skor rata-rata per siswa.

Ini kelas placeholder ScoreDetail menyimpan nama siswa beserta nilai suatu mata pelajaran.

Scoredetail-spark-combinebykey

Beberapa data uji dibuat dan diubah menjadi nilai pasangan kunci di mana key = Nama siswa dan nilai = ScoreDetail contoh.

metode system.exit akan mengakhiri aplikasi.

Kemudian kami membuat Pair RDD seperti yang ditunjukkan pada potongan kode di bawah ini. Hanya untuk percobaan, saya telah membuat pemartisi hash berukuran 3, sehingga ketiga partisi tersebut akan berisi 2, 2, dan 4 pasangan nilai kunci. Ini disorot di bagian tempat kami menjelajahi setiap partisi.

Sekarang kita dapat menjelajahi setiap partisi. Baris pertama mencetak panjang setiap partisi (jumlah pasangan nilai kunci per partisi) dan baris kedua mencetak konten setiap partisi.

cara memeriksa palindrome di java

Dan inilah pergerakan terakhir saat kami menghitung skor rata-rata per siswa setelah menggabungkan skor di seluruh partisi.

Alur kode di atas adalah sebagai berikut…
Pertama kita perlu membuat fungsi penggabung yang pada dasarnya adalah tupel = (nilai, 1) untuk setiap kunci yang ditemukan di setiap partisi. Setelah fase ini, keluaran untuk setiap (kunci, nilai) dalam partisi adalah (kunci, (nilai, 1)).

Kemudian pada iterasi berikutnya fungsi penggabung per partisi digabung menggunakan fungsi nilai gabungan untuk setiap kunci. Setelah fase ini, output dari setiap (key, (value, 1)) adalah (key, (total, count)) di setiap partisi.

Akhirnya fungsi penggabung gabungan menggabungkan semua nilai di seluruh partisi di pelaksana dan mengirim data kembali ke driver. Setelah fase ini, output dari setiap (key, (total, count)) per partisi adalah
(kunci, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Peta mengubah
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
untuk menghitung rata-rata per kunci sebagai (key, tuple._1 / tuple._2).

Baris terakhir mencetak skor rata-rata untuk semua siswa di ujung pengemudi.

Ada pertanyaan untuk kami? Sebutkan mereka di bagian komentar dan kami akan menghubungi Anda kembali.

Posting terkait:

Demystifying Partitioning di Spark