Introducción a los DataFrames de Spark
Desliza para mostrar el menú
Un Spark DataFrame es una colección distribuida de datos organizada en columnas con nombre. Conceptualmente, es equivalente a una tabla en una base de datos relacional o una hoja de cálculo con encabezados de columna, pero está diseñado para ser procesado en un clúster de computadoras.
Al avanzar a la Sección 4, cambiamos el enfoque de la interfaz a los propios datos. Para trabajar de manera efectiva en Databricks, es fundamental comprender el DataFrame. Esta es la estructura principal utilizada por Apache Spark para almacenar y manipular datos. Ya sea que utilices Python, SQL o Scala, casi todas las operaciones implican interactuar con un DataFrame.
También existe una interfaz Py Spark que utilizarás más adelante.
Apache Spark es un motor potente para procesar grandes volúmenes de datos en paralelo a través de muchas computadoras al mismo tiempo. Está escrito en Scala y es el encargado de realizar el procesamiento intensivo en Databricks.
PySpark es simplemente la interfaz de Python para Spark. Permite escribir código Python convencional que, en realidad, indica a Spark qué hacer en segundo plano.
Así, cuando escribes un df.filter() o df.groupBy() en un notebook de Databricks, estás utilizando PySpark, pero Spark es quien realmente procesa millones de filas en tu clúster.
La analogía de la hoja de cálculo
La forma más sencilla de visualizar un DataFrame es pensar en una sola hoja de un libro de Excel. Tiene filas de datos y columnas con nombres específicos como "Date", "Product_ID" o "Price". Sin embargo, a diferencia de una hoja de Excel que reside en tu computadora, un DataFrame de Spark es distribuido. Esto significa que si tu conjunto de datos es demasiado grande para una sola computadora, Spark divide la "hoja de cálculo" en partes más pequeñas y las distribuye entre los diferentes nodos de tu clúster.
¿Por qué usar DataFrames en lugar de archivos sin procesar?
Cuando lees un archivo CSV o JSON sin procesar en un DataFrame, Databricks realiza dos acciones importantes:
- Inferencia de esquema: analiza los datos para entender que "Price" es un número y "Name" es texto;
- Optimización: una vez que los datos están en un DataFrame, Spark puede usar su "optimizador" para encontrar la forma más rápida de filtrar o agregar esos datos. Actúa como un GPS, encontrando la ruta más eficiente hacia tu resultado para no desperdiciar recursos de cómputo.
Características clave
Existen tres características principales de los DataFrames que debes recordar:
- Inmutable: una vez que se crea un DataFrame, no se puede modificar. Si "limpias" los datos o "eliminas una columna", Spark en realidad crea un nuevo DataFrame con esos cambios aplicados. Esto garantiza la integridad de los datos;
- Evaluación perezosa: Spark no realiza ningún trabajo hasta que solicitas un resultado (como un conteo o una visualización). Primero construye un "plan" y solo lo ejecuta cuando es absolutamente necesario;
- API unificada: puedes crear un DataFrame con Python y luego consultarlo usando SQL. La estructura subyacente permanece igual, lo que permite la "mezcla de lenguajes" que practicamos en la Sección 3.
DataFrames vs. Tablas
En Databricks, los términos "Tabla" y "DataFrame" a menudo se usan de manera intercambiable, pero existe una pequeña diferencia. Una Tabla es un objeto permanente guardado en tu Catálogo. Un DataFrame es un objeto temporal que reside en la memoria del clúster mientras tu notebook está en ejecución.
Normalmente, tu flujo de trabajo será:
- Cargar datos desde el Catálogo en un DataFrame;
- Manipular el DataFrame usando código;
- Guardar el resultado final de nuevo en el Catálogo como una Tabla.
1. ¿Cómo maneja un DataFrame de Spark un conjunto de datos que es demasiado grande para una sola computadora?
2. ¿Qué sucede cuando se "modifica" un DataFrame en Spark, como eliminar una columna?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla