Introducere în RDD în Spark

Un RDD care reprezintă un set de date distribuite rezistent este unul dintre cele mai importante concepte din Spark. Este o colecție de numai citire a înregistrărilor care este partiționată și distribuită pe noduri într-un cluster. Poate fi transformat în alt RDD prin operațiuni și odată creat un RDD nu poate fi schimbat, ci mai degrabă va fi creat un nou RDD.

O caracteristică importantă prin care Spark a depășit limitele Hadoop este prin RDD, deoarece în loc să reproducă datele, Resilient Distributed Datasets (RDD) menține datele din nodurile dintr-un cluster și va recupera înapoi datele cu ajutorul graficului de linie. În Hadoop, datele au fost stocate redundant între mașinile care asigurau proprietatea toleranței la erori. Astfel, un RDD este o abstractizare fundamentală oferită de Spark pentru date distribuite și calcul.

Diferitele moduri de a crea un RDD sunt

  • Se încarcă un set de date extern
  • Trecerea datelor prin metoda Parallelize
  • Prin transformarea unui RDD existent

Să discutăm în detaliu fiecare dintre ele, dar înainte de aceasta, trebuie să punem la cale o scânteie, care este programul de scânteie al driverului. În acest articol, am inclus liniile de cod în scala. RDD poate avea orice tip de obiecte Python, Java sau Scala, inclusiv clase definite de utilizator. Aici sunt mai jos pașii care trebuie urmați pentru a lansa scânteia.

Lansarea Spark-Shell

Pasul 1: Descărcați și decuplați scânteia. Descărcați versiunea curentă de scânteie de pe site-ul oficial. Decuplați fișierul descărcat în orice locație din sistemul dvs.

Pasul 2: Setare Scala

  • Descărcați scala de pe scala lang.org
  • Instalați scala
  • Setați variabila de mediu SCALA_HOME și setați variabila PATH în directorul bin al scala.

Pasul 3: Porniți scânteia. Deschideți promptul de comandă și navigați la folderul bin al scânteii. Execute- scânteie.

Diferite moduri de creare a RDD

1. Încărcarea unui set de date externe

Metoda textFile a lui SparkContext este utilizată pentru încărcarea datelor de la orice sursă care la rândul său creează un RDD. Spark acceptă o gamă largă de surse din care se pot extrage date precum Hadoop, HBase, Amazon S3, etc. O sursă de date este un fișier text despre care am discutat aici. În afară de fișierele text, scala API suportă și alte formate de date, cum ar fi integralTextFiles, fișier secvență, Hadoop RDF și multe altele.

Exemplu

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

Variabila numită fișier este un RDD, creat dintr-un fișier text din sistemul local. În spark-shell, obiectul context scark (sc) a fost deja creat și este folosit pentru a accesa scânteia. TextFile este o metodă a unei clase org.apache.spark.SparkContext care citește un fișier text din HDFS, un sistem de fișiere local sau orice URI de sistem de fișiere suportat de Hadoop și îl returnează ca un RDD de șiruri. Astfel, intrarea pentru această metodă este un URI și partiționează datele din noduri.

2. Trecerea datelor prin metoda Parallelize

Un alt mod de a crea RDD-uri este luând o colecție de memorie existentă și trecând-o la o metodă de paralelizare a SparkContext. În timp ce învățarea scânteie acest mod de a crea RDDs este destul de util, deoarece putem crea RDD-uri în shell și de a efectua, de asemenea, operațiuni. Este greu utilizat în afara testării și prototipării, deoarece necesită ca toate datele să fie disponibile pe mașina locală. Un punct important în ceea ce privește paralelizarea este numărul de partiții în care este împărțită colecția. Putem trece numărul (partiții) ca un al doilea parametru în metoda de paralelizare și dacă numărul nu este specificat, Spark va decide în funcție de cluster.

  • Fără o serie de partiții:

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

  • Cu un număr de partiții:

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

3. Prin transformarea unui RDD existent

Există două tipuri de operații care sunt efectuate prin RDD.

  1. transformări
  2. acţiuni

Transformările sunt operații pe RDD care au ca rezultat crearea unui alt RDD, în timp ce acțiunile sunt operațiunile care returnează o valoare finală programului driver sau care scriu date unui sistem de stocare extern. Harta și filtrul sunt câteva operațiuni de transformare. Luați în considerare un exemplu de filtrare a unor linii dintr-un fișier text. Inițial, un RDD este creat prin încărcarea fișierului text. Apoi aplicăm o funcție de filtrare care va filtra un set de linii din fișierul text. Rezultatul va fi și un RDD. Operația filtrului nu schimbă RDD-ul de intrare existent. În schimb, returnează un pointer la un RDD complet nou, care este roșu. Putem folosi în continuare RDD de intrare pentru alte calcule.

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

Exemplul de mai jos arată același concept de transformare pentru o funcție de hartă. Rezultatul este RDD care a fost generat datorită funcției Map. În operația de hartă, logica va fi definită și această logică particulară va fi aplicată tuturor elementelor setului de date.

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

Puncte importante de reținut

  • Dintre toate cadrele disponibile în prezent, scânteia Apache este cea mai recentă și câștigă popularitate datorită caracteristicilor sale unice și abordării simple. Elimină toate dezavantajele prezentate de Hadoop, precum și menținerea toleranței la erori și a proprietății de scalabilitate a MapReduce. Pentru a atinge aceste obiective platforma de scânteie introduce conceptul de RDD.
  • Există în principal trei moduri în care poate fi creat un RDD în care cel mai de bază este atunci când încărcăm setul de date.
  • Metoda de paralelizare este largă numai în scopuri de testare și învățare.
  • O operațiune de transformare ar avea ca rezultat un RDD.

Articole recomandate

Acesta a fost un ghid pentru RDD în Spark. Aici am discutat, de asemenea, diferite moduri de creare a RDD, cum să lansăm Spark-Shell cu puncte importante. De asemenea, puteți parcurge articolele noastre date pentru a afla mai multe-

  1. Ce este RDD?
  2. Cum se instalează Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. Ce este Comandele Spark Shell?
  6. Ghid pentru lista de comenzi Unix Shell

Categorie: