Introducció
Els DataFrames són una de les estructures de dades més importants i utilitzades en Apache Spark. Són similars a les taules en bases de dades relacionals o als data frames en R i Python (pandas). Els DataFrames permeten treballar amb dades estructurades de manera eficient i proporcionen una API d'alt nivell per a la manipulació de dades.
Objectius
En aquesta secció, aprendràs:
- Què és un DataFrame de Spark.
- Com crear DataFrames.
- Com realitzar operacions bàsiques amb DataFrames.
- Com utilitzar l'API de Spark SQL amb DataFrames.
Què és un DataFrame de Spark?
Un DataFrame és una col·lecció distribuïda de dades organitzada en columnes amb noms. És similar a una taula en una base de dades o a un data frame en R/Python, però està optimitzat per a grans volums de dades i operacions distribuïdes.
Característiques dels DataFrames
- Columnes amb noms: Cada columna té un nom i un tipus de dades.
- Optimització: Utilitza el motor Catalyst per optimitzar les operacions.
- Distribuït: Les dades es distribueixen a través de múltiples nodes en un clúster.
- API d'alt nivell: Proporciona una API d'alt nivell per a la manipulació de dades.
Creació de DataFrames
Des d'un fitxer CSV
from pyspark.sql import SparkSession # Crear una sessió de Spark spark = SparkSession.builder.appName("DataFrameExample").getOrCreate() # Carregar un fitxer CSV en un DataFrame df = spark.read.csv("path/to/your/file.csv", header=True, inferSchema=True) # Mostrar les primeres files del DataFrame df.show()
Des d'un fitxer JSON
# Carregar un fitxer JSON en un DataFrame df = spark.read.json("path/to/your/file.json") # Mostrar les primeres files del DataFrame df.show()
Des d'una llista de Python
# Crear una llista de Python data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)] # Definir l'esquema columns = ["Name", "Age"] # Crear un DataFrame des de la llista df = spark.createDataFrame(data, columns) # Mostrar les primeres files del DataFrame df.show()
Operacions Bàsiques amb DataFrames
Seleccionar Columnes
# Seleccionar una columna df.select("Name").show() # Seleccionar múltiples columnes df.select("Name", "Age").show()
Filtrar Files
Agrupar i Agregar
Ordenar Files
Utilitzar l'API de Spark SQL amb DataFrames
Crear una Vista Temporal
# Crear una vista temporal df.createOrReplaceTempView("people") # Executar una consulta SQL result = spark.sql("SELECT * FROM people WHERE Age > 30") result.show()
Exercicis Pràctics
Exercici 1: Carregar un fitxer CSV
- Carrega un fitxer CSV en un DataFrame.
- Mostra les primeres 5 files del DataFrame.
Exercici 2: Filtrar i Seleccionar
- Filtra les files on l'edat és superior a 30.
- Selecciona només les columnes "Name" i "Age".
# Solució filtered_df = df.filter(df.Age > 30) selected_df = filtered_df.select("Name", "Age") selected_df.show()
Exercici 3: Agrupar i Agregar
- Agrupa les dades per la columna "Age".
- Calcula el nombre de persones per cada edat.
Errors Comuns i Consells
- Error en la càrrega de fitxers: Assegura't que el camí del fitxer és correcte i que el fitxer existeix.
- Tipus de dades incorrectes: Utilitza
inferSchema=True
per inferir automàticament els tipus de dades o defineix l'esquema manualment. - Operacions lentes: Utilitza l'API d'alt nivell de DataFrames i evita les operacions RDD quan sigui possible per aprofitar les optimitzacions de Catalyst.
Conclusió
Els DataFrames de Spark són una eina poderosa per treballar amb dades estructurades de manera eficient. En aquesta secció, has après a crear DataFrames, realitzar operacions bàsiques i utilitzar l'API de Spark SQL. Amb aquests coneixements, estaràs preparat per abordar tasques més complexes en el processament de dades amb Spark.
En el següent tema, explorarem Spark SQL en més detall, incloent-hi com executar consultes SQL sobre DataFrames i com integrar Spark amb bases de dades relacionals.
Curs d'Apache Spark
Mòdul 1: Introducció a Apache Spark
Mòdul 2: Conceptes Bàsics de Spark
Mòdul 3: Processament de Dades amb Spark
Mòdul 4: Programació Avançada amb Spark
Mòdul 5: Optimització i Millora del Rendiment
- Comprendre les Tasques de Spark
- Emmagatzematge en Memòria i Persistència
- Gestió de Memòria
- Optimització d'Aplicacions Spark
Mòdul 6: Spark al Núvol
Mòdul 7: Aplicacions del Món Real i Estudis de Cas
- Processament de Dades en Temps Real
- Anàlisi de Big Data
- Pipelines d'Aprenentatge Automàtic
- Estudis de Cas