Uvod u RDD u Spark-u

RDD koji stoji za elastični distribuirani skup podataka jedan je od najvažnijih koncepata u Spark-u. To je zbirka zapisa samo za čitanje koja je podijeljena i raspoređena po čvorovima u klasteru. Može se transformirati u neki drugi RDD kroz operacije i nakon što se stvori RDD, on se ne može promijeniti, nego će se stvoriti novi RDD.

Jedna važna značajka putem koje je Spark prevladao ograničenja Hadoopa je putem RDD-a, jer umjesto repliciranja podataka, Resilient Distributed skupovi podataka (RDD) održavaju podatke kroz čvorove u klasteru i vraćaju podatke uz pomoć grafikona linijske linije. Podaci u Hadoopu su suvišno pohranjeni među strojevima koji su imali svojstvo tolerancije greške. Dakle, RDD je temeljna apstrakcija koju Spark pruža za distribuirane podatke i računanje.

Različiti su načini stvaranja RDD-a

  • Učitavanje vanjskog skupa podataka
  • Prosljeđivanje podataka metodom Parallelize
  • Transformacijom postojećeg RDD-a

Raspravimo detaljno o svakom od njih, ali prije toga moramo postaviti ljusku iskre koja je pokretački program iskre. U ovom smo članku uključili retke koda u skali. RDD-ovi mogu imati bilo koju vrstu Python, Java ili Scala objekata, uključujući klase koje definira korisnik. Stoga su u nastavku navedeni koraci koje treba poduzeti za pokretanje iskre.

Pokretanje Spark-Shell-a

1. korak: preuzmite i raspakirajte iskru. Preuzmite trenutnu verziju iskre s službenog web mjesta. Raspakirajte preuzetu datoteku na bilo koje mjesto u vašem sustavu.

Korak 2: Postavljanje Scale

  • Preuzmite skala sa scala lang.org
  • Instalirajte skala
  • Postavite SCALA_HOME varijablu okruženja i postavite varijablu PATH u bin direktorij skale.

Korak: Pokrenite ljusku iskre. Otvorite naredbeni redak i pomaknite se do mape kante iskre. Izvrši-varnica-ljuska.

Različiti načini stvaranja RDD-a

1. Učitavanje vanjskog skupa podataka

Metoda textFile SparkContext koristi se za učitavanje podataka iz bilo kojeg izvora što zauzvrat stvara RDD. Spark podržava širok raspon izvora iz kojih se podaci mogu izvući, poput Hadoop, HBase, Amazon S3, itd. Jedan izvor podataka je tekstualna datoteka o kojoj smo ovdje raspravljali. Osim tekstualnih datoteka, scala API skala podržava i ostale formate podataka kao što su cjeloviti tekst, datoteka s nizovima, Hadoop RDF i mnogi drugi.

Primjer

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

Promjenjiva datoteka nazvana je RDD, stvorena iz tekstualne datoteke u lokalnom sustavu. U iskrenoj ljusci, objekt konteksta iskre (sc) već je stvoren i koristi se za pristup iskre. TextFile je metoda org.apache.spark.SparkContext klase koja čita tekstualnu datoteku s HDFS-a, lokalnog datotečnog sustava ili bilo kojeg URI-a podržanog od Hadoop-a i vraća ga kao RDD od žice. Stoga je unos ove metode URI i podatke dijeli na čvorove.

2. Prosljeđivanje podataka metodom Parallelize

Drugi način stvaranja RDD-a je uzimanje postojeće kolekcije u memoriji i prosljeđivanje iste kako bi se paralelizirala metoda SparkContext. Prilikom učenja iskra ovaj je način stvaranja RDD-a vrlo koristan jer možemo stvoriti RDD-ove u ljusci i izvoditi operacije. Teško se koristi izvan testiranja i prototipiranja jer zahtijeva da su svi podaci dostupni na lokalnom stroju. Važna stvar paralelizacije je broj particija na koje je zbirka razbijena. Broj (particije) možemo proslijediti kao drugi parametar u metodi paralelizacije, a ako broj nije naveden, Spark će odlučiti na temelju klastera.

  • Bez broja particija:

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

  • S većim brojem particija:

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

3. Transformacijom postojećeg RDD-a

Postoje dvije vrste operacija koje se izvode nad RDD.

  1. transformacije
  2. akcije

Transformacije su operacije na RDD-u koje rezultiraju stvaranjem drugog RDD-a dok su akcije one operacije koje vraćaju konačnu vrijednost upravljačkom programu ili upisuju podatke u vanjski sustav za pohranu. Karta i filtriranje su neke od transformacijskih operacija. Pogledajte primjer filtriranja nekih redaka iz tekstualne datoteke. U početku se RDD kreira učitavanjem tekstne datoteke. Zatim primjenjujemo funkciju filtriranja koja će filtrirati skup linija iz tekstne datoteke. Rezultat će biti i RDD. Rad filtra ne mijenja postojeći ulazni RDD. Umjesto toga, vraća pokazivač na potpuno novi RDD koji je pogreške crvene boje. Ulazni RDD i dalje možemo koristiti za druge proračune.

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

Donji primjer prikazuje isti koncept transformacije za funkciju karte. Rezultat je RDD koji je generiran zbog funkcije Map. U radu s mapom bit će definirana logika i ta će se određena logika primijeniti na sve elemente skupa podataka.

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

Važne točke koje morate zapamtiti

  • Među svim trenutno dostupnim okvirima, Apache iskra je najnovija i sve više dobiva na popularnosti zbog svojih jedinstvenih karakteristika i jednostavnog pristupa. Eliminira sve nedostatke koje predstavlja Hadoop, kao i održavanje svojstava otpornosti na greške i skalabilnosti MapReducea. Da bi se postigli ovi ciljevi, platforma za uvođenje predstavlja koncept RDD.
  • Postoje uglavnom tri načina na koja se može stvoriti RDD gdje je najosnovniji kada učitamo skup podataka.
  • Metoda paralelizacije široko je dostupna samo u svrhu testiranja i učenja.
  • Operacija transformacije rezultirala bi RDD-om.

Preporučeni članci

Ovo je vodič za RDD u Sparku. Ovdje smo također raspravljali o različitim načinima kreiranja RDD-a, kako lansirati Spark-Shell s važnim točkama. Možete i proći kroz naše članke da biste saznali više -

  1. Što je RDD?
  2. Kako instalirati varnicu
  3. Streaming iskre
  4. Spark DataFrame
  5. Što su naredbe iskre iskre?
  6. Vodič za popis naredbi Unix Shell

Kategorija: