0Pricing
Scala for Backend Engineering & Functional Programming · Lección

Agregaciones

Agrupe y agregue

Agregaciones es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.

¿Por qué agregar?

Las agregaciones resumen muchas filas en menos filas: totales, promedios y recuentos por grupo. En Spark son operaciones amplias que pueden redistribuir datos por el clúster.

Agregaciones globales

Calcule un único resumen de todo el DataFrame con agg y funciones como count, sum, avg, min y max.

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

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

groupBy

groupBy particiona las filas según una o más columnas y produce un RelationalGroupedDataset listo para la agregación.

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

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

Varias agregaciones

Pase varias expresiones de agregación a agg para calcular varios resúmenes por grupo en una sola pasada.

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

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

Recuento de valores distintos

Use countDistinct para contar valores únicos y approx_count_distinct para obtener un recuento aproximado más rápido en conjuntos de datos enormes.

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

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

Filtrado de grupos con having

En SQL, HAVING filtra los grupos agregados. En el DSL, aplique filter después de agg sobre la columna calculada.

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

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

Agregación en SQL

La misma lógica que una consulta SQL sobre una vista registrada, mediante GROUP BY y HAVING.

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

Tablas dinámicas

pivot convierte los valores distintos de una columna en columnas separadas; resulta útil para tablas de contingencia, como las ventas por región y trimestre.

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

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

Funciones de ventana

Las funciones de ventana agregan datos sobre un marco deslizante sin combinar las filas; son perfectas para totales acumulados o clasificaciones.

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()

Agregaciones de RDD

En el nivel de RDD, aggregateByKey y reduceByKey combinan valores por clave con lógica personalizada y una combinación local previa para mejorar la eficiencia.

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

groupBy en Scala puro

Un equivalente autocontenido: el groupBy de las colecciones de Scala junto con mapValues refleja una operación de agrupación y agregación de 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") }
  }
}

Comprobación rápida

¿Qué función agrega datos sobre un marco de filas sin combinarlas en una sola fila por grupo?

Resumen

Ha agregado datos en Spark:

  • agg con count, sum, avg, min y max
  • groupBy, varias agregaciones y filtros having
  • pivot y funciones de ventana
  • reduceByKey / aggregateByKey de RDD

Ha completado el curso de Apache Spark.

Preguntas frecuentes

¿La lección «Agregaciones» es gratis?

Sí — el texto completo de «Agregaciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.

¿Qué aprenderé en «Agregaciones»?

Agrupe y agregue Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?

No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Agregaciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?

Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. RDDs y DataFrames
  2. Transformaciones y acciones
  3. Spark SQL
  4. Agregaciones
← Volver a Scala for Backend Engineering & Functional Programming