Lectura y escritura de DataFrames en Apache Spark
Clase 15 de 25 • Curso de Databricks: Arquitectura Delta Lake
Contenido del curso
Administración y Gestion de la Plataforma de Databricks
- 5

Creación y Configuración de Clúster en Databricks
07:03 min - 6

Gestión de Datos y Notebooks en Databricks File System
11:26 min - 7

Transformaciones y Acciones en Apache Spark
03:42 min - 8

Conceptos básicos de RDDs en Apache Spark
02:30 min - 9

Creación y Transformaciones de RDDs en Databricks
17:01 min - 10

Acciones en Apache Spark: Uso y Ejemplos Prácticos
05:34 min - 11

Lectura de Datos en Apache Spark con Databricks
09:36 min - 12

Exploración de SparkUI en Databricks: Monitorización y Configuración
04:23 min - 13

Instalación de Librerías en Databricks paso a paso
08:30 min - 14

Alternativas para Trabajar con Apache Spark: Local vs. Nube
03:42 min
Apache Spark SQL y UDF
Implementacion de un Delta Lake en Databricks
- 19

Arquitecturas Data Lake y Delta Lake en Big Data
05:24 min - 20

Delta Lake: Almacenamiento y Gestión de Datos en Big Data
01:32 min - 21

Arquitectura Medallion en Data Lake House: Capas Bronze, Silver y Gold
03:41 min - 22

Comandos Esenciales para Databricks File System (DBFS)
00:34 min - 23

Implementación de arquitectura Delta Lake en Databricks
06:38 min - 24

Arquitectura Delta Lake: Creación de Capas Bronce, Silver y Gold
05:26 min - 25

Gestión de Datos Avanzada con Databricks y Delta Lake
02:14 min
En Apache Spark, un DataFrame es una estructura de datos distribuida que se organiza en filas y columnas. Es una abstracción de datos tabulares que se asemeja a una tabla en una base de datos relacional o a un DataFrame en lenguajes de programación como R o Python.
Resulta importante mencionar que un DataFrame en Spark puede ser creado a partir de diversas fuentes de datos como archivos CSV, JSON, Parquet, bases de datos SQL, entre otros. Por supuesto, también lo podemos crear desde 0.
En esencia, un dataframe proporciona una interfaz de programación para manipular y procesar datos de manera distribuida en un clúster de computadoras. A este tipo de objeto también es posible aplicarle transformaciones y acciones en Spark.
Algunas características clave de los DataFrames en Apache Spark son:
- Inmutabilidad: Al igual que en otros contextos de Spark los DataFrames son inmutables, lo que significa que no se pueden modificar directamente después de su creación. Las transformaciones en un Dataframe crean otro nuevo.
- Optimización de consultas: Spark optimiza automáticamente las consultas en los DataFrames utilizando su motor de ejecución Catalyst. Esto permite realizar operaciones de manera eficiente y optimizada.
- Soporte para varios lenguajes: Los DataFrames en Spark están disponibles en varios lenguajes de programación como Scala, Java, Python y R, lo que facilita su uso en diferentes entornos.
- Integración con fuentes de datos externas: Pueden leer y escribir datos desde y hacia una variedad de fuentes de datos, lo que facilita la integración con diferentes sistemas y formatos.
- API rica: Los DataFrames proporcionan una API rica que permite realizar operaciones complejas de manipulación y análisis de datos de manera declarativa, lo que facilita la expresión de la lógica de procesamiento.
Por lo tanto, podemos concluir que los DataFrames en Apache Spark ofrecen una interfaz de alto nivel para el procesamiento de datos distribuidos, facilitando la manipulación y el análisis de grandes conjuntos de datos de manera eficiente en clústeres de computadoras.
Escritura y lectura de dataframes en Spark
En Apache Spark, la lectura y escritura de DataFrames se realiza utilizando las API correspondientes proporcionadas por Spark.
Lectura de DataFrames:
A. Desde un archivo CSV:
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("example").getOrCreate() df = spark.read.csv("ruta/del/archivo.csv", header=True, inferSchema=True)
En este ejemplo, header=True indica que la primera fila del archivo CSV contiene nombres de columnas, y inferSchema=True intentará inferir automáticamente los tipos de datos de las columnas.
B. Desde un archivo Parquet:
df = spark.read.parquet("ruta/del/archivo.parquet")
Parquet es un formato de almacenamiento eficiente para datos estructurados y es compatible con Spark.
C. Desde una tabla de base de datos SQL:
df = spark.read.jdbc(url="jdbc:mysql://localhost:3306/base_de_datos", table="nombre_tabla", properties={"user": "usuario", "password": "contraseña"})
En este ejemplo se lee desde una tabla de una base de datos SQL.
Escritura de DataFrames:
-
A un archivo CSV:
df.write.csv("ruta/de/destino", header=True)
Esto escribirá el DataFrame en formato CSV en la ruta especificada.
-
A un archivo Parquet:
df.write.parquet("ruta/de/destino")
Escribir en formato Parquet es eficiente y puede ser una buena opción para el almacenamiento a largo plazo.
-
A una tabla de base de datos SQL:
df.write.jdbc(url="jdbc:mysql://localhost:3306/base_de_datos", table="nombre_tabla", mode="overwrite", properties={"user": "usuario", "password": "contraseña"})
En este ejemplo, mode="overwrite" indica que se sobrescribirán los datos si la tabla ya existe. Otras opciones incluyen "append" y "ignore".
Más información: https://spark.apache.org/docs/latest/sql-programming-guide.html