RDDs y DataFrames
Abstracciones de datos de Spark
RDDs y DataFrames es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 1 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.
¿Qué es Apache Spark?
Apache Spark es un motor distribuido para procesar datos a gran escala. Divide los datos entre un clúster y ejecuta los cálculos en paralelo. Scala es el lenguaje nativo de Spark, lo que proporciona una API concisa y consciente de los tipos.
El RDD
El Resilient Distributed Dataset (RDD) es la abstracción de bajo nivel de Spark: una colección inmutable y particionada que puede procesarse en paralelo y reconstruirse a partir de su linaje si falla un nodo.
SparkContext y SparkSession
Se accede a Spark mediante una SparkSession. Su sparkContext crea RDD; la propia sesión crea DataFrames y ejecuta SQL.
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("Demo")
.master("local[*]")
.getOrCreate()Creación de un RDD
Cree un RDD paralelizando una colección local o leyendo un archivo. Cada partición es procesada por una tarea independiente.
val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines = sc.textFile("data.txt")El DataFrame
Un DataFrame es una tabla distribuida con columnas con nombre y tipo, similar a un RDD de filas más un esquema. El optimizador Catalyst puede planificar y optimizar las consultas de DataFrame.
Creación de un DataFrame
Cree DataFrames a partir de colecciones (con toDF) o leyendo archivos estructurados como CSV, JSON o Parquet.
import spark.implicits._
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")Inspección de un DataFrame
Use show para imprimir filas, printSchema para ver los tipos de las columnas y count para obtener el número de filas.
df.printSchema()
df.show()
println(df.count())Datasets y seguridad de tipos
Un Dataset es un DataFrame tipado: Dataset[T], donde T es una case class. Combina la optimización de DataFrame con comprobaciones de tipos en tiempo de compilación.
import spark.implicits._
case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()RDD frente a DataFrame y Dataset
Elija según sus necesidades:
- RDD — control total, sin esquema ni optimizador
- DataFrame — esquema y optimización de Catalyst, filas sin tipar
- Dataset — esquema, optimización y seguridad de tipos
Conversión entre ellos
Convierta un DataFrame en un RDD con .rdd, o un RDD de case classes en un DataFrame con .toDF. Los Datasets también se convierten en DataFrames con .toDF.
val rdd = df.rdd // DataFrame -> RDD[Row]
val back = ds.toDF() // Dataset -> DataFrameColección básica de Scala
Conceptualmente, un DataFrame se comporta como una colección de Scala, pero distribuida. Este es el equivalente local y autónomo para facilitar la comprensión.
object Main {
case class Person(name: String, age: Int)
def main(args: Array[String]): Unit = {
val people = Seq(Person("Alice", 30), Person("Bob", 25))
people.foreach(p => println(s"${p.name}: ${p.age}"))
}
}Comprobación rápida
¿Qué abstracción proporciona un esquema, optimización de Catalyst y seguridad de tipos en tiempo de compilación?
Repaso
Ha conocido las abstracciones de datos de Spark:
SparkSessioncomo punto de entrada- RDD — colección distribuida de bajo nivel
- DataFrame — tabla distribuida con esquema
- Dataset — DataFrame tipado
A continuación: transformaciones y acciones.
Preguntas frecuentes
¿La lección «RDDs y DataFrames» es gratis?
Sí — el texto completo de «RDDs y DataFrames» 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 «RDDs y DataFrames»?
Abstracciones de datos de Spark 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 1 de 4.
¿Cuánto tiempo toma la lección «RDDs y DataFrames»?
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
- RDDs y DataFrames
- Transformaciones y acciones
- Spark SQL
- Agregaciones