El Shell de Spark és una eina interactiva que permet als desenvolupadors executar codi Spark en temps real. És una manera excel·lent de provar i depurar codi, així com d'explorar dades de manera interactiva. En aquest tema, aprendrem com utilitzar el Shell de Spark, les seves funcionalitats bàsiques i alguns exemples pràctics.

  1. Introducció al Shell de Spark

El Shell de Spark proporciona una interfície interactiva per treballar amb Spark. Hi ha dos tipus principals de Shells de Spark:

  • Spark Shell (Scala): Utilitza Scala com a llenguatge de programació.
  • PySpark Shell: Utilitza Python com a llenguatge de programació.

  1. Iniciant el Shell de Spark

Spark Shell (Scala)

Per iniciar el Spark Shell en Scala, simplement executa la següent comanda al terminal:

$SPARK_HOME/bin/spark-shell

PySpark Shell

Per iniciar el PySpark Shell, executa la següent comanda al terminal:

$SPARK_HOME/bin/pyspark

  1. Funcionalitats Bàsiques del Shell de Spark

3.1. Crear un RDD

Un RDD (Resilient Distributed Dataset) és la unitat bàsica de dades en Spark. A continuació es mostra com crear un RDD en el Spark Shell:

Scala

val data = Array(1, 2, 3, 4, 5)
val rdd = sc.parallelize(data)

Python

data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)

3.2. Transformacions i Accions

Les transformacions són operacions que es realitzen sobre un RDD i retornen un nou RDD. Les accions són operacions que retornen un valor al driver program després de realitzar càlculs sobre un RDD.

Scala

// Transformació: Filtrar els números parells
val evenNumbers = rdd.filter(x => x % 2 == 0)

// Acció: Comptar els elements
val count = evenNumbers.count()
println(s"Count of even numbers: $count")

Python

# Transformació: Filtrar els números parells
even_numbers = rdd.filter(lambda x: x % 2 == 0)

# Acció: Comptar els elements
count = even_numbers.count()
print(f"Count of even numbers: {count}")

3.3. Treballar amb DataFrames

Els DataFrames són una API de més alt nivell que els RDDs i proporcionen una manera més eficient de treballar amb dades estructurades.

Scala

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

Python

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

  1. Exemples Pràctics

Exemple 1: Comptar Paraules

Aquest exemple mostra com comptar la freqüència de paraules en un text utilitzant el Shell de Spark.

Scala

val textFile = sc.textFile("path/to/text/file")
val counts = textFile.flatMap(line => line.split(" "))
                     .map(word => (word, 1))
                     .reduceByKey(_ + _)
counts.collect().foreach(println)

Python

text_file = sc.textFile("path/to/text/file")
counts = text_file.flatMap(lambda line: line.split(" ")) \
                  .map(lambda word: (word, 1)) \
                  .reduceByKey(lambda a, b: a + b)
counts.collect().foreach(print)

Exemple 2: Operacions amb DataFrames

Aquest exemple mostra com realitzar operacions bàsiques amb DataFrames.

Scala

val df = spark.read.json("path/to/json/file")
df.printSchema()
df.select("name", "age").show()
df.filter(df("age") > 21).show()

Python

df = spark.read.json("path/to/json/file")
df.printSchema()
df.select("name", "age").show()
df.filter(df["age"] > 21).show()

  1. Exercicis Pràctics

Exercici 1: Crear un RDD i Filtrar Elements

  1. Crea un RDD amb els números del 1 al 10.
  2. Filtra els números que són majors que 5.
  3. Mostra els resultats.

Solució (Scala)

val data = 1 to 10
val rdd = sc.parallelize(data)
val filtered = rdd.filter(_ > 5)
filtered.collect().foreach(println)

Solució (Python)

data = range(1, 11)
rdd = sc.parallelize(data)
filtered = rdd.filter(lambda x: x > 5)
filtered.collect().foreach(print)

Exercici 2: Treballar amb DataFrames

  1. Llegeix un fitxer JSON en un DataFrame.
  2. Mostra l'esquema del DataFrame.
  3. Selecciona i mostra les columnes "name" i "age".
  4. Filtra i mostra les files on l'edat és superior a 30.

Solució (Scala)

val df = spark.read.json("path/to/json/file")
df.printSchema()
df.select("name", "age").show()
df.filter(df("age") > 30).show()

Solució (Python)

df = spark.read.json("path/to/json/file")
df.printSchema()
df.select("name", "age").show()
df.filter(df["age"] > 30).show()

  1. Conclusió

El Shell de Spark és una eina poderosa per interactuar amb Spark de manera interactiva. Hem après com iniciar el Shell de Spark, crear RDDs, realitzar transformacions i accions, i treballar amb DataFrames. A més, hem vist alguns exemples pràctics i exercicis per reforçar els conceptes apresos. Amb aquesta base, estàs preparat per explorar més funcionalitats de Spark i aplicar-les als teus projectes.

© Copyright 2024. Tots els drets reservats