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
- Utwórz funkcję sumatora: x
- Funkcja scalania wartości: y
- 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.
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: