0Pricing
Scala for Backend Engineering & Functional Programming · Aula

Agregações

Agrupe e agregue.

Agregações é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Scala for Backend Engineering & Functional Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

Por que Agregar?

Agregações resumem muitas linhas em menos linhas: totais, médias e contagens por grupo. No Spark, são operações amplas que podem embaralhar dados entre os nós do cluster.

Agregações Globais

Calcule um único resumo sobre todo o DataFrame com agg e funções como count, sum, avg, min e max.

import org.apache.spark.sql.functions._

df.agg(
  count("*").as("rows"),
  avg("age").as("avg_age")
).show()

groupBy

groupBy particiona as linhas por uma ou mais colunas, produzindo um RelationalGroupedDataset pronto para agregação.

import org.apache.spark.sql.functions._

val byCity = df.groupBy("city").agg(count("*").as("people"))
byCity.show()

Várias Agregações

Passe várias expressões de agregação para agg a fim de calcular vários resumos por grupo em uma única passagem.

import org.apache.spark.sql.functions._

df.groupBy("department").agg(
  sum("salary").as("total"),
  avg("salary").as("avg"),
  max("salary").as("top")
).show()

Contando Valores Distintos

Use countDistinct para contar valores únicos e approx_count_distinct para obter uma contagem aproximada mais rápida em conjuntos de dados enormes.

import org.apache.spark.sql.functions._

df.agg(countDistinct("city").as("unique_cities")).show()

Filtrando Grupos com having

Em SQL, HAVING filtra grupos agregados. Na DSL, aplique um filter depois de agg à coluna calculada.

import org.apache.spark.sql.functions._

df.groupBy("city")
  .agg(count("*").as("n"))
  .filter(col("n") > 100)
  .show()

Agregando em SQL

A mesma lógica de uma consulta SQL sobre uma visualização registrada, usando GROUP BY e HAVING.

df.createOrReplaceTempView("people")
spark.sql(
  "SELECT city, COUNT(*) AS n FROM people GROUP BY city HAVING COUNT(*) > 100"
).show()

Tabelas Dinâmicas

pivot transforma os valores distintos de uma coluna em colunas separadas — útil para tabelas cruzadas, como vendas por região e trimestre.

import org.apache.spark.sql.functions._

sales.groupBy("region")
     .pivot("quarter")
     .agg(sum("amount"))
     .show()

Funções de Janela

As funções de janela agregam sobre um quadro deslizante sem reduzir as linhas — são perfeitas para totais acumulados ou classificações.

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._

val w = Window.partitionBy("dept").orderBy(col("salary").desc)
df.withColumn("rank", rank().over(w)).show()

Agregações de RDD

No nível de RDD, aggregateByKey e reduceByKey combinam valores por chave com lógica personalizada e combinação local prévia para maior eficiência.

val pairs = sc.parallelize(Seq(("a", 10), ("a", 20), ("b", 5)))
val sums  = pairs.reduceByKey(_ + _)
// (a, 30), (b, 5)

groupBy em Scala Puro

Um análogo independente: o groupBy das coleções de Scala, junto com mapValues, reproduz um agrupamento e uma agregação do Spark.

object Main {
  def main(args: Array[String]): Unit = {
    val data = Seq(("a", 10), ("a", 20), ("b", 5))
    val sums = data.groupBy(_._1).map { case (k, v) => k -> v.map(_._2).sum }
    sums.toSeq.sortBy(_._1).foreach { case (k, s) => println(s"$k: $s") }
  }
}

Verificação Rápida

Qual recurso agrega sobre um quadro de linhas sem reduzi-las a uma linha por grupo?

Recapitulação

Você agregou dados no Spark:

  • agg com count, sum, avg, min e max
  • groupBy, várias agregações e filtros having
  • pivot e funções de janela
  • reduceByKey / aggregateByKey em RDD

Você concluiu o curso de Apache Spark.

Perguntas Frequentes

A aula “Agregações” é grátis?

Sim — o texto completo de “Agregações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Scala for Backend Engineering & Functional Programming, atualize para CoddyKit PRO. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

O que vou aprender em “Agregações”?

Agrupe e agregue. Você pratica Scala for Backend Engineering & Functional Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Scala for Backend Engineering & Functional Programming?

Nenhuma experiência prévia é necessária. Scala for Backend Engineering & Functional Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Agregações”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Scala for Backend Engineering & Functional Programming?

Sim. Cada aula de Scala for Backend Engineering & Functional Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. RDDs e DataFrames
  2. Transformações e ações
  3. Spark SQL
  4. Agregações
← Voltar para Scala for Backend Engineering & Functional Programming