Uvod v RDD in Spark

RDD, ki pomeni odporen distribucijski nabor podatkov, je eden najpomembnejših konceptov Spark. Gre za zbirko zapisov, ki je samo za branje, ki je razdeljena in razporejena po vozliščih v grozdu. Z operacijami se lahko pretvori v kakšen drug RDD in ko je RDD ustvarjen, ga ni mogoče spremeniti, temveč bo ustvaril nov RDD.

Pomembna lastnost, s katero je Spark premagal omejitve Hadoopa, je prek RDD, ker namesto da posnema podatke, Resilient Distributed nabori podatkov (RDD) vzdržujejo podatke po vozliščih v grozdu in bodo povrnili podatke s pomočjo linijskega grafa. V Hadoopu so bili podatki odvečno shranjeni med stroji, ki so imeli lastnost napak. Tako je RDD temeljna abstrakcija, ki jo ponuja Spark za porazdeljene podatke in računanje.

RDD so različni načini

  • Nalaganje zunanjega niza podatkov
  • Prenos podatkov po metodi Parallelize
  • S preoblikovanjem obstoječega RDD

O vsaki od njih podrobneje razpravljamo, še prej pa moramo postaviti lupino iskrice, ki je gonilni program iskre. V ta članek smo v skalo vključili vrstice kode. RDD-ji lahko vsebujejo kakršne koli predmete Python, Java ali Scala, vključno z razredi, ki jih določi uporabnik. Spodaj so navedeni koraki, ki jih je treba uporabiti za lansiranje iskrice.

Izstrelitev iskre-lupine

1. korak: Prenesite in razpakirajte iskrico. Prenesite trenutno različico iskre z uradnega spletnega mesta. Odstranite naloženo datoteko na katero koli mesto v vašem sistemu.

2. korak: Nastavitev Scale

  • Prenesite skalo z scala lang.org
  • Namestite skalo
  • Nastavite spremenljivko okolja SCALA_HOME in spremenite PATH v imenik bin skale.

Korak 3: Zaženite iskrišče. Odprite ukazni poziv in se pomaknite do bin mape iskre. Izvedite-iskre-lupino.

Različni načini ustvarjanja RDD

1. Nalaganje zunanjega nabora podatkov

Metoda besedila datoteke SparkContext se uporablja za nalaganje podatkov iz katerega koli vira, kar posledično ustvari RDD. Spark podpira širok razpon virov, iz katerih je mogoče črpati podatke, kot so Hadoop, HBase, Amazon S3 itd. En vir podatkov je besedilna datoteka, o kateri smo tukaj razpravljali. Poleg besedilnih datotek iskalni API scala podpira tudi druge oblike podatkov, kot so celotaTextFiles, zaporedna datoteka, Hadoop RDF in številne druge.

Primer

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

Spremenljiva datoteka, ki se imenuje, je RDD, ustvarjena iz besedilne datoteke v lokalnem sistemu. V iskanju lupine je že bil ustvarjen kontekstni objekt iskre (sc) in se uporablja za dostop do iskrice. TextFile je metoda razreda org.apache.spark.SparkContext, ki bere besedilno datoteko iz HDFS, lokalnega datotečnega sistema ali katerega koli URI-ja podprtega s sistemom Hadoop in ga vrne kot RDD od nizov. Tako je vhod za to metodo URI in podatke razdeli po vozliščih.

2. Prenos podatkov po metodi Parallelize

Drug način ustvarjanja RDD-jev je tako, da vzamete obstoječo zbirko v pomnilniku in jo posredujete vzporedni metodi SparkContext. Ta način ustvarjanja RDD-jev med učenjem iskri je zelo koristen, saj lahko sami kreiramo v lupini in izvajamo tudi operacije. Zunaj testiranja in prototipov se skoraj ne uporablja, saj zahteva, da so celotni podatki na voljo na lokalnem stroju. Pomembna točka paralelizacije je število particij, na katere je zbirka razdeljena. Število (particije) lahko prenesemo kot drugi parameter v metodi paralelizacije in če število ni določeno, se bo Spark odločil glede na gručo.

  • Brez številnih particij:

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

  • S številnimi particijami:

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

3. S preoblikovanjem obstoječega RDD

Obstajata dve vrsti operacij, ki se izvajajo prek RDD.

  1. Transformacije
  2. Dejanja

Transformacije so operacije na RDD, katerih rezultat je ustvarjanje drugega RDD, medtem ko so dejanja operacije, ki vrnejo končno vrednost gonilnemu programu ali zapišejo podatke v zunanji sistem za shranjevanje. Zemljevid in filter sta nekaj preoblikovalnih operacij. Razmislite o primeru filtriranja nekaterih vrstic iz besedilne datoteke. Sprva se RDD ustvari z nalaganjem besedilne datoteke. Nato uporabimo funkcijo filtriranja, ki bo iz besedilne datoteke odstranila niz vrstic. Rezultat bo tudi RDD. Delovanje filtra ne spremeni obstoječega vhodnega RDD. Namesto tega vrne kazalec na povsem nov RDD, ki je napake rdeče. Vhodni RDD še vedno lahko uporabimo za druge izračune.

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

Spodnji primer prikazuje isti koncept transformacije za funkcijo zemljevida. Rezultat je RDD, ki je bil ustvarjen zaradi funkcije Map. Pri delovanju s kartami bo definirana logika in določena logika bo uporabljena za vse elemente nabora podatkov.

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

Pomembne točke, ki si jih morate zapomniti

  • Med vsemi okviri, ki so trenutno na voljo, je Apache iskra najnovejša in pridobiva na priljubljenosti zaradi svojih edinstvenih lastnosti in enostavnega pristopa. Odpravlja vse pomanjkljivosti, ki jih ima Hadoop, kot tudi ohranja odpornost in razširljivost lastnosti MapReduce. Za dosego teh ciljev iskalna platforma uvaja koncept RDD.
  • V glavnem obstajajo trije načini, kako lahko ustvarite RDD, kjer je najbolj osnovni, ko naložimo nabor podatkov.
  • Metoda paralelizacije je široko le za namene testiranja in učenja.
  • Operacija preoblikovanja bi povzročila RDD.

Priporočeni članki

To je vodnik za RDD v Sparku. Tu smo razpravljali tudi o različnih načinih ustvarjanja RDD, kako lansirati Spark-Shell s pomembnimi točkami. Obiščite lahko tudi naše članke, če želite izvedeti več -

  1. Kaj je RDD?
  2. Kako namestiti iskrilo
  3. Iskrivo pretakanje
  4. Spark DataFrame
  5. Kaj so ukazi iskre Shell?
  6. Vodnik po seznamu ukazov školjke Unix

Kategorija: