Apache Spark combineByKey explicado



Este blog do Spark Hadoop conta tudo o que você precisa saber sobre o Apache Spark combineByKey. Encontre a pontuação média por aluno usando o método combineByKey.

Contribuição de Prithviraj Bose

Spark é uma estrutura de computação em cluster ultrarrápida projetada para computação rápida e a demanda por profissionais com é substancial no mercado hoje.Aqui está uma API poderosa no Spark que é combineByKey .





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

API Python: pyspark.RDD.combineByKey .



A API tem três funções (como expressões lambda dentro Pitão ou funções anônimas dentro Escada ), a saber,

  1. Criar função combinadora: x
  2. Função de combinação de valor: y
  3. Função de combinação de combinadores: z

e o formato da API é combineByKey (x, y, z) .

Vejamos um exemplo (em Scala). A fonte completa do Scala pode ser encontrada Aqui .



Nosso objetivo é encontrar a pontuação média por aluno.

Aqui está uma classe de espaço reservado ScoreDetail armazenar o nome dos alunos junto com a pontuação de um assunto.

Scoredetail-spark-combinebykey

tamanho da matriz em javascript

Alguns dados de teste são gerados e convertidos em valores de par de chaves onde chave = nome do aluno e valor = ScoreDetail instância.

Em seguida, criamos um par RDD conforme mostrado no fragmento de código abaixo. Apenas para experimentar, criei um particionador hash de tamanho 3, de modo que as três partições conterão 2, 2 e 4 pares de valores-chave, respectivamente. Isso é destacado na seção onde exploramos cada partição.

Agora podemos explorar cada partição. A primeira linha imprime o comprimento de cada partição (número de pares de valores-chave por partição) e a segunda linha imprime o conteúdo de cada partição.

invertendo um número em java

E aqui está o movimento final, em que calculamos a pontuação média por aluno depois de combinar as pontuações nas partições.

O fluxo de código acima é o seguinte ...
Primeiro, precisamos criar uma função combinadora que é essencialmente uma tupla = (valor, 1) para cada chave encontrada em cada partição. Após esta fase, a saída para cada (chave, valor) em uma partição é (chave, (valor, 1)).

Então, na próxima iteração, as funções do combinador por partição são mescladas usando a função de valor de mesclagem para cada tecla. Após esta fase, a saída de cada (chave, (valor, 1)) é (chave, (total, contagem)) em cada partição.

Por fim, a função combinador de mesclagem mescla todos os valores nas partições nos executores e envia os dados de volta ao driver. Após esta fase, a saída de cada (chave, (total, contagem)) por partição é
(chave, (totalAcrossAllPartitions, countAcrossAllPartitions)).

O mapa converte o
(chave, tupla) = (chave, (totalAcrossAllPartitions, countAcrossAllPartitions))
para calcular a média por chave como (chave, tupla._1 / tupla._2).

A última linha imprime a pontuação média de todos os alunos no final do motorista.

Tem alguma questão para nós? Mencione-os na seção de comentários e entraremos em contato com você.

Postagens relacionadas:

Desmistificando o particionamento no Spark