Apache Spark connectByKey Poradnik



Na tym blogu Spark Hadoop znajdziesz wszystko, co musisz wiedzieć o połączeniu z kluczem Apache Spark. Znajdź średni wynik na ucznia za pomocą metody connectByKey.

Nadesłane przez Prithviraj Bose

Spark to błyskawicznie działająca platforma obliczeń klastrowych zaprojektowana z myślą o szybkich obliczeniach i zapotrzebowaniu na profesjonalistów z jest obecnie znacząca na rynku.Oto potężny interfejs API w Spark connectByKey .





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

Python API: pyspark.RDD.combineByKey .



API ma trzy funkcje (jak wyrażenia lambda w Pyton lub funkcje anonimowe w Drabina ), a mianowicie

  1. Utwórz funkcję sumatora: x
  2. Funkcja scalania wartości: y
  3. Funkcja łączenia scalaczy: z

a format API to connectByKey (x, y, z) .

Zobaczmy przykład (w Scali). Pełne źródło Scala można znaleźć tutaj .



Naszym celem jest znalezienie średniego wyniku na ucznia.

Oto klasa zastępcza ScoreDetail przechowywanie nazwiska ucznia wraz z punktacją z przedmiotu.

Scoredetail-spark-combinebykey

Niektóre dane testowe są generowane i konwertowane na wartości par kluczy, gdzie klucz = Imię ucznia i wartość = ScoreDetail instancja.

windows dodaj java do ścieżki

Następnie tworzymy parę RDD, jak pokazano w fragmencie kodu poniżej. Na potrzeby eksperymentów utworzyłem partycjoner z mieszaniem o rozmiarze 3, więc trzy partycje będą zawierały odpowiednio 2, 2 i 4 pary klucz-wartość. Jest to podkreślone w sekcji, w której badamy każdą partycję.

Teraz możemy zbadać każdą partycję. Pierwsza linia wypisuje długość każdej partycji (liczba par klucz-wartość na partycję), a druga linia wyświetla zawartość każdej partycji.

jak rzucić podwójną do int

A oto ruch końcowy, w którym obliczamy średni wynik na ucznia po połączeniu wyników w różnych partycjach.

Powyższy przepływ kodu jest następujący…
Najpierw musimy utworzyć funkcję łączącą, która jest zasadniczo krotką = (wartość, 1) dla każdego klucza napotkanego w każdej partycji. Po tej fazie wyjście dla każdego (klucz, wartość) w partycji to (klucz, (wartość, 1)).

Następnie w następnej iteracji funkcje łączące na partycję są łączone przy użyciu funkcji łączenia wartości dla każdego klucza. Po tej fazie wyjście każdego (klucz, (wartość, 1)) jest (klucz, (suma, liczba)) w każdej partycji.

Na koniec funkcja łączenia scalającego łączy wszystkie wartości na partycjach w plikach wykonawczych i wysyła dane z powrotem do sterownika. Po tej fazie wyjście każdego (klucz, (suma, liczba)) na partycję jest
(klucz, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Mapa konwertuje
(klucz, krotka) = (klucz, (totalAcrossAllPartitions, countAcrossAllPartitions))
aby obliczyć średnią na klucz jako (klucz, krotka._1 / krotka._2).

W ostatnim wierszu wyświetlane są średnie wyniki wszystkich uczniów po stronie kierowcy.

Masz do nas pytanie? Wspomnij o nich w sekcji komentarzy, a skontaktujemy się z Tobą.

Powiązane posty:

Demistyfikujące partycjonowanie w Spark