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.
- 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
- 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
.
2.3. Desar un DataFrame com a Fitxer Parquet
Per desar un DataFrame com a fitxer Parquet, utilitzarem el mètode write.parquet
.
- 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
- Carrega un fitxer Parquet des de la ruta
path/to/your/input.parquet
. - Filtra les files on la columna
age
és major que 30. - 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.
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