Johdatus RDD: hen Sparkissa

RDD, joka tarkoittaa joustavaa jaettua tietojoukkoa, on yksi Sparkin tärkeimmistä käsitteistä. Se on luku-vain luku -kokoelma tietueita, jotka osioidaan ja jaetaan klusterin solmujen välillä. Se voidaan muuntaa toiseksi RDD: ksi toimintojen avulla, ja kun RDD on luotu, sitä ei voida muuttaa, vaan luodaan uusi RDD.

Yksi tärkeä ominaisuus, jonka kautta Spark ylitti Hadoopin rajoitukset, on RDD: n kautta, koska sen sijaan, että replikoisi dataa, Resilient Distributed Datasets (RDD) ylläpitää tietoja klusterin solmujen välillä ja palauttaa tiedot takaisin linjakuvaajan avulla. Hadoopissa tiedot tallennettiin tarpeettomasti koneisiin, jotka tarjosivat vikasietoisuuden ominaisuuden. Täten RDD on Sparkin tarjoama perustavanlaatuinen abstraktio hajautetulle datalle ja laskennalle.

Eri tapoja luoda RDD on

  • Ladataan ulkoista tietojoukkoa
  • Tietojen siirtäminen rinnakkaismenetelmän avulla
  • Muuttamalla olemassa oleva RDD

Keskustelemme niistä jokaisesta yksityiskohtaisesti, mutta ennen sitä meidän on perustettava kipinäkuori, joka on kipinän ohjainohjelma. Tässä artikkelissa olemme sisällyttäneet koodirivit scalaan. RDD-objekteissa voi olla minkä tahansa tyyppisiä Python-, Java- tai Scala-objekteja, mukaan lukien käyttäjän määrittämät luokat. Alla on siis vaiheet, joita on noudatettava kipinäkuoren käynnistämiseksi.

Käynnistetään Spark-Shell

Vaihe 1: Lataa ja purkaa kipinä. Lataa kipinän nykyinen versio viralliselta verkkosivustolta. Pura ladattu tiedosto mihin tahansa sijaintiisi järjestelmässä.

Vaihe 2: Asennuskaavio

  • Lataa scala osoitteesta scala lang.org
  • Asenna scala
  • Aseta SCALA_HOME-ympäristömuuttuja ja aseta PATH-muuttuja skaalauksen hakemistoon.

Vaihe 3: Käynnistä kipinäkuori . Avaa komentokehote ja siirry kipinälaatikon kansioon. Suorita kipinäkuori.

Eri tapoja luoda RDD

1. Ulkoisen tietojoukon lataaminen

SparkContextin textFile-menetelmää käytetään tietojen lataamiseen mistä tahansa lähteestä, joka puolestaan ​​luo RDD: n. Spark tukee monenlaisia ​​lähteitä, joista tietoja voidaan vetää, kuten Hadoop, HBase, Amazon S3 jne. Yksi tietolähde on tekstitiedosto, josta olemme keskustelleet täällä. Tekstitiedostojen lisäksi spark's scala API tukee myös muita tietomuotoja, kuten WholeTextFiles, sekvenssitiedosto, Hadoop RDF ja monia muita.

esimerkki

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

Tiedosto nimeltään tiedosto on RDD, joka on luotu paikallisen järjestelmän tekstitiedostosta. Kipinäkuoressa kipinäkontekstiobjekti (sc) on jo luotu ja sitä käytetään kipinän saavuttamiseen. TextFile on org.apache.spark.SparkContext-luokan menetelmä, joka lukee tekstitiedoston HDFS: stä, paikallisesta tiedostojärjestelmästä tai mistä tahansa Hadoopin tukemasta tiedostojärjestelmän URI: stä ja palauttaa sen merkkijonojen RDD: nä. Siksi tämän menetelmän tulo on URI ja jakaa tiedot solmujen välillä.

2. Tietojen siirtäminen rinnakkaismenetelmän avulla

Toinen tapa luoda RDD: tä on ottamalla olemassa oleva muistin kokoelma ja siirtämällä se rinnakkain SparkContext-menetelmän kanssa. Vaikka kipinän oppiminen, tämä tapa luoda RDD: tä on varsin hyödyllistä, koska voimme luoda RDD: t kuoreen ja suorittaa myös toimintoja. Sitä ei tuskin käytetä testauksen ja prototyyppien ulkopuolella, koska se vaatii koko tiedon olevan saatavilla paikallisella koneella. Yksi tärkeä kohta rinnakkaisvalinnassa on niiden osioiden lukumäärä, joihin kokoelma on hajotettu. Voimme siirtää numeron (osiot) toisena parametrina rinnakkaismenetelmässä ja jos numeroa ei määritetä, Spark päättää klusterin perusteella.

  • Ilman useita osioita:

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

  • Useilla osioilla:

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

3. Muuntamalla olemassa oleva RDD

RDD: llä suoritetaan kahta tyyppisiä toimintoja.

  1. muunnokset
  2. Toiminnot

Muunnokset ovat RDD: n toimintoja, jotka johtavat toisen RDD: n luomiseen, kun taas toiminnot ovat toimintoja, jotka palauttavat lopullisen arvon ohjainohjelmalle tai kirjoittavat tietoja ulkoiseen tallennusjärjestelmään. Kartta ja suodatin ovat joitain muuntamistoimenpiteitä. Harkitse esimerkkiä joidenkin rivien suodattamisesta tekstitiedostosta. Aluksi RDD luodaan lataamalla tekstitiedosto. Sitten käytämme suodatustoimintoa, joka suodattaa joukon rivejä tekstitiedostosta. Tuloksena on myös RDD. Suodatintoiminto ei muuta olemassa olevaa tulo-RDD: tä. Sen sijaan se palauttaa osoittimen kokonaan uudelle RDD: lle, joka on punainen virhe. Voimme silti käyttää RDD-tuloa muihin laskutoimituksiin.

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

Seuraava esimerkki näyttää saman muunnoskonseptin karttatoiminnolle. Tuloksena on RDD, joka on luotu Kartta-toiminnon vuoksi. Karttaoperaatiossa määritetään logiikka ja tätä logiikkaa sovelletaan kaikkiin tietojoukon elementteihin.

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

Tärkeät muistettavat seikat

  • Kaikista tällä hetkellä saatavilla olevista kehyksistä Apache-kipinä on viimeisin, ja se on saamassa suosiota ainutlaatuisten ominaisuuksiensa ja yksinkertaisen lähestymistapansa vuoksi. Se poistaa kaikki Hadoopin aiheuttamat haitat sekä ylläpitää MapReducen vikasietoisuutta ja skaalautuvuutta. Näiden tavoitteiden saavuttamiseksi kipinäympäristö esittelee RDD-käsitteen.
  • RDD voidaan luoda pääasiassa kolmella tapaa, jos perustiedot on, kun ladataan tietojoukko.
  • Rinnakkaismenetelmä on laajalti vain testausta ja oppimista varten.
  • Muunnosoperaatio johtaisi RDD: hen.

Suositellut artikkelit

Tämä on opas RDD: hen Sparkissa. Täällä olemme keskustelleet myös erilaisista tavoista luoda RDD, kuinka käynnistää Spark-Shell tärkeiden seikkojen kanssa. Voit myös käydä annettujen artikkeleidemme läpi oppiaksesi lisää-

  1. Mikä on RDD?
  2. Kuinka asentaa Spark
  3. Spark streaming
  4. Spark DataFrame
  5. Mikä on Spark Shell -komennot?
  6. Opas Unix-kuorikomentojen luetteloon

Luokka: