Apache Spark pagsamahinByKey Ipinaliwanag



Sinasabi sa iyo ng Spark Hadoop blog na ito ang lahat ng kailangan mong malaman tungkol sa Apache Spark ngagabungByKey. Hanapin ang average na marka ng bawat mag-aaral na gumagamit ng pagsasama-sama ng paraan ngBeyKey.

Ibinigay ni Prithviraj Bose

Ang Spark ay isang framework na mabilis na computing computing ng kumpol na dinisenyo para sa mabilis na pagkalkula at ang pangangailangan para sa mga propesyonal na may malaki sa merkado ngayon.Narito ang isang malakas na API sa Spark na pagsamahinByKey .





Scale ng API: org.apache.spark.PairRDDFunction.combineByKey .

Python API: pyspark.RDD.combineByKey .



Ang API ay tumatagal ng tatlong mga pagpapaandar (bilang expression ng lambda sa Sawa o hindi nagpapakilalang pag-andar sa Hagdan ), katulad,

  1. Lumikha ng pag-andar ng kombinasyon: x
  2. Pagsamahin ang pagpapaandar ng halaga: y
  3. Pag-andar ng mga pagsasama-sama ng pagsasama-sama: z

at ang format ng API ay pagsamahinByKey (x, y, z) .

Tingnan natin ang isang halimbawa (sa Scala). Ang buong mapagkukunang Scala ay matatagpuan dito .



Ang aming layunin ay upang mahanap ang average na iskor bawat mag-aaral.

Narito ang isang klase ng placeholder ScoreDetail pagtatago ng pangalan ng mga mag-aaral kasama ang marka ng isang paksa.

Scoredetail-spark-combinebykey

Ang ilang data ng pagsubok ay nabuo at na-convert sa mga halagang key-pares kung saan susi = Pangalan ng mga mag-aaral at halaga = ScoreDetail halimbawa

Pagkatapos ay lumikha kami ng isang Pair RDD tulad ng ipinakita sa fragment ng code sa ibaba. Para lamang sa pag-eeksperimento, lumikha ako ng isang hash partitioner ng laki ng 3, kaya ang tatlong mga pagkahati ay maglalaman ng 2, 2 at 4 na pangunahing mga pares ng halaga ayon sa pagkakabanggit. Ito ay naka-highlight sa seksyon kung saan namin galugarin ang bawat pagkahati.

Ngayon ay maaari nating tuklasin ang bawat pagkahati. Ang unang linya ay naglilimbag ng haba ng bawat pagkahati (bilang ng mga pangunahing halaga ng mga pares bawat pagkahati) at ang pangalawang linya ay naglilimbag ng mga nilalaman ng bawat pagkahati.

At narito ang kilusang pangwakas kung saan kinukuwenta namin ang average na iskor bawat mag-aaral pagkatapos pagsamahin ang mga marka sa mga partisyon.

Ang daloy ng code sa itaas ay ang mga sumusunod ...
Una kailangan naming lumikha ng isang function ng kombinasyon na kung saan ay mahalagang isang tuple = (halaga, 1) para sa bawat key na nakatagpo sa bawat pagkahati. Matapos ang yugtong ito ang output para sa bawat (key, halaga) sa isang pagkahati ay (susi, (halaga, 1)).

Pagkatapos sa susunod na pag-ulit ang mga pagpapaandar ng kombinasyon sa bawat pagkahati ay pinagsama gamit ang pag-andar ng halaga ng pagsasama para sa bawat key. Matapos ang yugtong ito ang output ng bawat (key, (halaga, 1)) ay (key, (total, count)) sa bawat pagkahati.

Sa wakas ang pag-andar ng pagsasama-sama ng pagsasama ay pinagsasama ang lahat ng mga halaga sa mga partisyon sa mga tagapagpatupad at ipinapadala ang data pabalik sa driver. Matapos ang yugtong ito ang output ng bawat (key, (total, count)) bawat pagkahati ay
(key, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Binago ng mapa ang
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
upang makalkula ang average per key bilang (key, tuple._1 / tuple._2).

ano ang sqoop sa hadoop

Ang huling linya ay naglilimbag ng average na mga marka para sa lahat ng mga mag-aaral sa dulo ng pagmamaneho.

May tanong ba sa amin? Nabanggit ang mga ito sa seksyon ng komento at babalikan ka namin.

Mga Kaugnay na Post:

Demystifying Partitioning sa Spark