Apache Spark menggabungkanByKey Dijelaskan



Blog Spark Hadoop ini memberitahu anda semua yang perlu anda ketahui mengenai Apache Spark CombByKey. Cari skor purata setiap pelajar menggunakan kaedah CombByKey.

Disumbangkan oleh Prithviraj Bose

Spark adalah kerangka pengkomputeran kluster sepantas kilat yang dirancang untuk pengiraan yang cepat dan permintaan untuk profesional dengan terdapat di pasaran sekarang.Inilah API yang hebat di Spark menggabungkanByKey .





masukkan php ke dalam jadual $

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

Python API: pyspark.RDD.combineByKey .



API mengambil tiga fungsi (seperti ungkapan lambda dalam Python atau fungsi tanpa nama dalam Tangga ), iaitu,

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

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

Mari kita lihat contoh (di Scala). Sumber Scala lengkap boleh dijumpai di sini .



Objektif kami adalah untuk mencari skor purata bagi setiap pelajar.

Inilah kelas placeholder Perincian Skor menyimpan nama pelajar bersama dengan skor mata pelajaran.

Scoredetail-spark-combinebykey

Beberapa data ujian dihasilkan dan ditukar menjadi nilai pasangan kunci di mana kunci = Nama pelajar dan nilai = SkorDetail contoh.

Kemudian kami membuat Pair RDD seperti yang ditunjukkan dalam fragmen kod di bawah. Hanya untuk percubaan, saya telah membuat partitioner hash bersaiz 3, jadi ketiga-tiga partisi masing-masing akan mengandungi 2, 2 dan 4 pasangan nilai kunci. Ini diserlahkan di bahagian di mana kita meneroka setiap partisi.

Sekarang kita dapat meneroka setiap partisi. Baris pertama mencetak panjang setiap partisi (bilangan pasangan nilai kunci setiap partisi) dan baris kedua mencetak isi setiap partisi.

cara menukar dua kali ganda menjadi int

Dan inilah pergerakan terakhir di mana kami mengira skor purata setiap pelajar setelah menggabungkan skor di bahagian partition.

Aliran kod di atas adalah seperti berikut ...
Mula-mula kita perlu membuat fungsi penggabung yang pada dasarnya adalah tuple = (nilai, 1) untuk setiap kunci yang dihadapi dalam setiap partisi. Selepas fasa ini output untuk setiap (kunci, nilai) dalam partisi adalah (kunci, (nilai, 1)).

Kemudian pada lelaran seterusnya fungsi gabungan setiap partisi digabungkan menggunakan fungsi nilai gabungan untuk setiap kekunci. Selepas fasa ini output setiap (kunci, (nilai, 1)) adalah (kunci, (jumlah, kiraan)) dalam setiap partisi.

Akhirnya fungsi penggabungan penggabungan menggabungkan semua nilai merentasi partisi dalam pelaksana dan menghantar data kembali kepada pemacu. Selepas fasa ini output setiap (kunci, (jumlah, kiraan)) setiap partisi adalah
(kunci, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Peta menukar
(kunci, tuple) = (kunci, (totalAcrossAllPartitions, countAcrossAllPartitions))
untuk mengira purata setiap kunci sebagai (kunci, tuple._1 / tuple._2).

Baris terakhir mencetak skor purata untuk semua pelajar di hujung pemandu.

Ada soalan untuk kami? Sebutkannya di bahagian komen dan kami akan menghubungi anda.

Catatan berkaitan:

Demystifying Partitioning dalam Spark