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

# Filtrar files basades en una condició
df.filter(df.Age > 30).show()

Agrupar i Agregar

# Agrupar per una columna i calcular l'agrupació
df.groupBy("Age").count().show()

Ordenar Files

# Ordenar files per una columna
df.orderBy("Age").show()

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

  1. Carrega un fitxer CSV en un DataFrame.
  2. Mostra les primeres 5 files del DataFrame.
# Solució
df = spark.read.csv("path/to/your/file.csv", header=True, inferSchema=True)
df.show(5)

Exercici 2: Filtrar i Seleccionar

  1. Filtra les files on l'edat és superior a 30.
  2. 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

  1. Agrupa les dades per la columna "Age".
  2. Calcula el nombre de persones per cada edat.
# Solució
grouped_df = df.groupBy("Age").count()
grouped_df.show()

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.

© Copyright 2024. Tots els drets reservats