En aquest tema, aprendrem com carregar i desar dades utilitzant Apache Spark. Aquest és un aspecte fonamental del treball amb Spark, ja que la majoria de les aplicacions de dades impliquen la lectura de dades d'alguna font, la seva transformació i l'escriptura dels resultats en una destinació.

Objectius

  • Entendre com carregar dades en Spark.
  • Aprendre a desar dades processades.
  • Conèixer els diferents formats de fitxers suportats per Spark.

  1. Carregar Dades en Spark

1.1. Formats de Fitxers Suportats

Spark suporta una àmplia varietat de formats de fitxers, incloent:

  • CSV
  • JSON
  • Parquet
  • ORC
  • Avro

1.2. Carregar un Fitxer CSV

Per carregar un fitxer CSV en un DataFrame de Spark, utilitzarem el mètode spark.read.csv.

val df = spark.read
  .option("header", "true") // Indica que el fitxer CSV té una capçalera
  .option("inferSchema", "true") // Inferir automàticament els tipus de dades
  .csv("path/to/your/file.csv")

df.show() // Mostra les primeres files del DataFrame

1.3. Carregar un Fitxer JSON

Per carregar un fitxer JSON, utilitzarem el mètode spark.read.json.

val df = spark.read.json("path/to/your/file.json")

df.show() // Mostra les primeres files del DataFrame

1.4. Carregar un Fitxer Parquet

El format Parquet és un format de fitxer columnar que és molt eficient per a l'emmagatzematge i la consulta de dades.

val df = spark.read.parquet("path/to/your/file.parquet")

df.show() // Mostra les primeres files del DataFrame

  1. Desar Dades en Spark

2.1. Desar un DataFrame com a Fitxer CSV

Per desar un DataFrame com a fitxer CSV, utilitzarem el mètode write.csv.

df.write
  .option("header", "true") // Incloure la capçalera en el fitxer CSV
  .csv("path/to/save/file.csv")

2.2. Desar un DataFrame com a Fitxer JSON

Per desar un DataFrame com a fitxer JSON, utilitzarem el mètode write.json.

df.write.json("path/to/save/file.json")

2.3. Desar un DataFrame com a Fitxer Parquet

Per desar un DataFrame com a fitxer Parquet, utilitzarem el mètode write.parquet.

df.write.parquet("path/to/save/file.parquet")

  1. Exemples Pràctics

Exemple 1: Carregar i Desar un Fitxer CSV

// Carregar el fitxer CSV
val df = spark.read
  .option("header", "true")
  .option("inferSchema", "true")
  .csv("path/to/your/input.csv")

// Realitzar alguna transformació (per exemple, filtrar les files amb valors nuls)
val filteredDf = df.filter("column_name IS NOT NULL")

// Desar el DataFrame resultant com a fitxer CSV
filteredDf.write
  .option("header", "true")
  .csv("path/to/save/output.csv")

Exemple 2: Carregar i Desar un Fitxer JSON

// Carregar el fitxer JSON
val df = spark.read.json("path/to/your/input.json")

// Realitzar alguna transformació (per exemple, seleccionar columnes específiques)
val selectedDf = df.select("column1", "column2")

// Desar el DataFrame resultant com a fitxer JSON
selectedDf.write.json("path/to/save/output.json")

Exercicis Pràctics

Exercici 1: Carregar i Desar un Fitxer Parquet

  1. Carrega un fitxer Parquet des de la ruta path/to/your/input.parquet.
  2. Filtra les files on la columna age és major que 30.
  3. Desa el DataFrame resultant com a fitxer Parquet a la ruta path/to/save/output.parquet.

Solució

// Carregar el fitxer Parquet
val df = spark.read.parquet("path/to/your/input.parquet")

// Filtrar les files on la columna 'age' és major que 30
val filteredDf = df.filter("age > 30")

// Desar el DataFrame resultant com a fitxer Parquet
filteredDf.write.parquet("path/to/save/output.parquet")

Conclusió

En aquesta secció, hem après com carregar i desar dades utilitzant Apache Spark. Hem vist com treballar amb diferents formats de fitxers com CSV, JSON i Parquet. Aquests coneixements són essencials per a qualsevol treball amb dades en Spark, ja que la majoria de les aplicacions impliquen la lectura i escriptura de dades. En el proper tema, explorarem les operacions amb DataFrames per manipular i transformar les dades carregades.

© Copyright 2024. Tots els drets reservats