Apache Spark комбинацияByKey Обяснено



Този блог на Spark Hadoop ви разказва всичко, което трябва да знаете за Apache Spark combByKey. Намерете средния резултат на ученик, използвайки метода combByKey.

Принос от Prithviraj Bose

Spark е светкавично бърза клъстерна изчислителна рамка, предназначена за бързо изчисление и търсене на професионалисти с е значителна на пазара днес.Ето мощен API в Spark, който е combByKey .





API мащаб: org.apache.spark.PairRDDFunctions.combineByKey .

клас на скенер в Java пример

API на Python: pyspark.RDD.combineByKey .



API има три функции (като ламбда изрази в Python или анонимни функции в Стълба ), а именно,

  1. Създаване на комбинатор функция: x
  2. Функция за обединяване на стойността: y
  3. Функция за обединяване на комбинатори: z

и API форматът е combByKey (x, y, z) .

Нека да видим пример (в Scala). Пълният източник на Scala може да бъде намерен тук .



Нашата цел е да намерим средния резултат на студент.

Ето клас на заместител ScoreDetail съхраняване на име на учениците заедно с резултата от даден предмет.

Scoredetail-spark-combinebykey

Някои тестови данни се генерират и преобразуват в стойности на двойки ключове където ключ = Име на учениците и стойност = ScoreDetail инстанция.

След това създаваме двойка RDD, както е показано във фрагмента на кода по-долу. Само за експериментиране създадох хеш-дял с размер 3, така че трите дяла ще съдържат съответно 2, 2 и 4 двойки ключови стойности. Това е подчертано в раздела, където изследваме всеки дял.

Сега можем да изследваме всеки дял. Първият ред отпечатва дължината на всеки дял (брой двойки ключови стойности на дял), а вторият ред отпечатва съдържанието на всеки дял.

завърши програма в java

И ето финалното движение, при което изчисляваме средния резултат на ученик след комбиниране на резултатите в дяловете.

Горният поток на кода е както следва ...
Първо трябва да създадем комбинираща функция, която по същество е кортеж = (стойност, 1) за всеки ключ, срещан във всеки дял. След тази фаза изходът за всеки (ключ, стойност) в дял е (ключ, (стойност, 1)).

След това при следващата итерация комбинираните функции на дял се обединяват, като се използва функцията за обединяване на стойността за всеки ключ. След тази фаза изходът на всеки (ключ, (стойност, 1)) е (ключ, (общо, брой)) във всеки дял.

Накрая функцията за комбиниране на сливане обединява всички стойности в дяловете в изпълнителите и изпраща данните обратно на драйвера. След тази фаза изходът на всеки (ключ, (общо, брой)) за дял е
(ключ, (totalAcrossAllPartitions, countAcrossAllPartitions)).

Картата преобразува
(ключ, кортеж) = (ключ, (totalAcrossAllPartitions, countAcrossAllPartitions))
за изчисляване на средната стойност за ключ като (ключ, кортеж._1 / кортеж._2).

Последният ред отпечатва средните резултати за всички ученици в края на водача.

Имате въпрос към нас? Споменете ги в раздела за коментари и ние ще се свържем с вас.

Подобни публикации:

Демистифициране на разделянето в Spark