Introduzione a RDD in Spark

Un RDD che sta per Resilient Distributed Dataset è uno dei concetti più importanti di Spark. È una raccolta di sola lettura di record che è partizionata e distribuita tra i nodi in un cluster. Può essere trasformato in qualche altro RDD tramite operazioni e una volta creato un RDD non può essere cambiato, piuttosto verrà creato un nuovo RDD.

Una caratteristica importante attraverso la quale Spark ha superato i limiti di Hadoop è tramite RDD perché, anziché replicare i dati, Resilient Distributed Dataset (RDD) mantiene i dati attraverso i nodi in un cluster e li ripristina con l'aiuto del grafico di derivazione. In Hadoop, i dati sono stati archiviati in modo ridondante tra le macchine che fornivano la proprietà della tolleranza agli errori. Quindi un RDD è un'astrazione fondamentale fornita da Spark per i dati distribuiti e il calcolo.

I diversi modi di creare un RDD sono

  • Caricamento di un set di dati esterno
  • Passando i dati attraverso il metodo Parallelize
  • Trasformando un RDD esistente

Discutiamo ciascuno di essi in dettaglio, ma prima di ciò, dobbiamo creare uno spark-shell che è il programma driver di Spark. In questo articolo, abbiamo incluso le righe di codice in scala. Gli RDD possono avere qualsiasi tipo di oggetti Python, Java o Scala, comprese le classi definite dall'utente. Di seguito sono riportati i passaggi da seguire per avviare spark-shell.

Avvio di Spark-Shell

Passaggio 1: scarica e decomprimi spark. Scarica la versione attuale di Spark dal sito ufficiale. Decomprimi il file scaricato in qualsiasi posizione nel tuo sistema.

Passaggio 2: installare Scala

  • Scarica scala da scala lang.org
  • Installa scala
  • Imposta la variabile di ambiente SCALA_HOME e imposta la variabile PATH nella directory bin di scala.

Passaggio 3: avviare Spark-shell. Apri il prompt dei comandi e vai alla cartella bin di spark. Esegui-spark-shell.

Diversi modi di creare RDD

1. Caricamento di un set di dati esterno

Il metodo textFile di SparkContext viene utilizzato per caricare i dati da qualsiasi origine che a sua volta crea un RDD. Spark supporta una vasta gamma di fonti da cui è possibile estrarre i dati come Hadoop, HBase, Amazon S3, ecc. Una fonte di dati è un file di testo di cui abbiamo discusso qui. Oltre ai file di testo, la scala API di spark supporta anche altri formati di dati come interi file di testo, file di sequenza, Hadoop RDF e molti altri.

Esempio

val file = sc.textFile("/path/textFile.txt"") // relative path

La variabile chiamata file è un RDD, creato da un file di testo sul sistema locale. In spark-shell, l'oggetto di contesto spark (sc) è già stato creato e viene utilizzato per accedere a spark. TextFile è un metodo di una classe org.apache.spark.SparkContext che legge un file di testo da HDFS, un file system locale o qualsiasi URI di file system supportato da Hadoop e lo restituisce come RDD di stringhe. Pertanto, l'input per questo metodo è un URI e suddivide i dati tra i nodi.

2. Passando i dati attraverso il metodo Parallelize

Un altro modo di creare RDD è prendere una raccolta in memoria esistente e passarla per parallelizzare il metodo di SparkContext. Mentre l'apprendimento scatena questo modo di creare RDD è abbastanza utile in quanto possiamo creare RDD nella shell ed eseguire anche operazioni. È poco utilizzato al di fuori dei test e della prototipazione poiché richiede che tutti i dati siano disponibili sul computer locale. Un punto importante sulla parallelizzazione è il numero di partizioni in cui è suddivisa la raccolta. Possiamo passare il numero (partizioni) come secondo parametro nel metodo parallelize e se il numero non è specificato, Spark deciderà in base al cluster.

  • Senza un numero di partizioni:

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

  • Con un numero di partizioni:

val sample = sc.parallelize(List(1, 2, 3, 4, 5), 3)

3. Trasformando un RDD esistente

Esistono due tipi di operazioni eseguite su RDD.

  1. trasformazioni
  2. Azioni

Le trasformazioni sono operazioni su RDD che portano alla creazione di un altro RDD mentre le azioni sono le operazioni che restituiscono un valore finale al programma del driver o scrivono dati su un sistema di archiviazione esterno. Mappa e filtro sono alcune operazioni di trasformazione. Prendi in considerazione un esempio di filtraggio di alcune righe da un file di testo. Inizialmente, un RDD viene creato caricando il file di testo. Quindi applichiamo una funzione di filtro che filtra un set di righe dal file di testo. Il risultato sarà anche un RDD. L'operazione di filtro non modifica l'RDD di input esistente. Al contrario, restituisce un puntatore a un RDD completamente nuovo che rappresenta gli errori in rosso. Possiamo ancora usare l'input RDD per altri calcoli.

val inputRDD = sc.textFile("log.txt")val errorsRDD = inputRDD.filter(line => line.contains("error"))

L'esempio seguente mostra lo stesso concetto di trasformazione per una funzione della mappa. Il risultato è il RDD che è stato generato a causa della funzione Mappa. Nell'operazione della mappa, la logica verrà definita e quella particolare logica verrà applicata a tutti gli elementi del set di dati.

val inputRDD = sc.parallelize(List(10, 9, 8, 7, 6, 5))val resultRDD = inputRDD.map(y => y * y)println(resultRDD.collect().mkString(", "))

Punti importanti da ricordare

  • Tra tutti i framework attualmente disponibili, Apache Spark è l'ultimo e sta guadagnando popolarità grazie alle sue caratteristiche uniche e al suo approccio semplice. Elimina tutti gli svantaggi posti da Hadoop e mantiene la proprietà di tolleranza agli errori e scalabilità di MapReduce. Per raggiungere questi obiettivi, la piattaforma Spark introduce il concetto di RDD.
  • Esistono principalmente tre modi in cui è possibile creare un RDD in cui quello più semplice è quando si carica il set di dati.
  • Il metodo parallelizzato è ampiamente solo a scopo di test e apprendimento.
  • Un'operazione di trasformazione comporterebbe un RDD.

Articoli consigliati

Questa è stata una guida a RDD in Spark. Qui abbiamo anche discusso diversi modi di creare RDD, come avviare Spark-Shell con punti importanti. Puoi anche consultare i nostri articoli per saperne di più-

  1. Che cos'è RDD?
  2. Come installare Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Cosa sono i comandi Spark Shell?
  6. Guida all'elenco dei comandi Unix Shell

Categoria: