Si eres nuevo en Spark, empieza con estas tres operaciones: select, filter y write. Este post es un tour práctico con un dataset pequeño que puedes correr en cualquier lugar. Referencia: DataFrame select, filter.

Descargas al final: ir a Descargas.

En pocas palabras

  • DataFrames es la API que usarás todos los días.
  • Lo básico (select, filter, groupBy) cubre la mayoría del trabajo.
  • Escribir datos es parte del flujo, no un extra.

Ejecuta tú mismo

  • Spark local (Docker): ruta principal de este blog.
  • Databricks Free Edition: alternativa rápida si no quieres Docker.
1
docker compose up

Links:


Crear un dataset pequeño

Creamos un DataFrame simple con columnas que usaremos luego.

1
2
3
4
5
6
7
from pyspark.sql import functions as F

df = (
    spark.range(0, 100_000)
         .withColumn("country", F.when(F.col("id") % 3 == 0, "MX").when(F.col("id") % 3 == 1, "PE").otherwise("CO"))
         .withColumn("amount", (F.rand() * 100).cast("double"))
)

Select y filter

Seleccionamos columnas y filtramos para quedarnos con lo relevante.

1
2
filtered = df.select("id", "country", "amount").filter("amount > 50")
filtered.show(5)

Salida esperada (ejemplo):

+---+-------+------+
| id|country|amount|
+---+-------+------+
|  1|     PE| 78.21|
|  4|     MX| 65.03|
...

Agrupar y agregar

Agrupamos por país para ver un resumen rápido.

1
2
summary = filtered.groupBy("country").count()
summary.show()

Salida esperada (ejemplo):

+-------+-----+
|country|count|
+-------+-----+
|     PE|16667|
|     MX|16666|
|     CO|16667|

Escribir el resultado

Guardamos el resultado para entender cómo queda en disco.

1
2
out_path = "/tmp/pyspark/basics"
summary.write.mode("overwrite").parquet(out_path)

Salida esperada: Se crea la carpeta out_path con archivos Parquet.


Qué verificar

  • filtered.count() es menor que el conteo original.
  • La carpeta de salida existe y tiene Parquet.
  • Los conteos por grupo tienen sentido.

Notas de práctica

  • Empieza mirando una muestra con show().
  • Mantén rutas simples para enseñar.
  • Guarda outputs para entender el layout en disco.

Descargas

Si no quieres copiar código, descarga el notebook o el .py.