Introduksjon til RDD i Spark

En RDD som står for Resilient Distribuerte datasett er et av de viktigste konseptene i Spark. Det er en skrivebeskyttet samling av poster som er partisjonert og distribuert over nodene i en klynge. Det kan transformeres til noen andre RDD gjennom operasjoner, og når en RDD er opprettet, kan den ikke endres, heller vil en ny RDD opprettes.

En viktig funksjon som Spark har overvunnet begrensningene til Hadoop er via RDD fordi heller enn å gjenskape dataene, opprettholder Resilient Distribuerte Datasett (RDD) dataene over nodene i en klynge og vil gjenopprette dataene ved hjelp av linjegraf. I Hadoop ble dataene overflødig lagret blant maskinene som ga egenskapen til feiltoleranse. Dermed er en RDD en grunnleggende abstraksjon levert av Spark for distribuert data og beregning.

De forskjellige måtene å opprette en RDD er

  • Laster inn et eksternt datasett
  • Overføring av dataene via Parallelize-metoden
  • Ved å transformere en eksisterende RDD

La oss diskutere hver av dem i detalj, men før det må vi sette opp et gnistskall som er driverens gnistprogram. I denne artikkelen har vi tatt med kodelinjene i skala. RDD-er kan ha alle typer Python-, Java- eller Scala-objekter, inkludert brukerdefinerte klasser. Følgende er trinnene som skal følges for å starte gnistskall nedenfor.

Lansering av gnistskjell

Trinn 1: Last ned og pakke ut gnisten. Last ned den gjeldende versjonen av gnist fra det offisielle nettstedet. Pakk ut den nedlastede filen til et hvilket som helst sted i systemet.

Trinn 2: Oppsett Scala

  • Last ned scala fra scala lang.org
  • Installer scala
  • Angi SCALA_HOME-miljøvariabelen og sett PATH-variabelen til søppelkatalogen for scala.

Trinn 3: Start gnistskallet. Åpne ledeteksten og naviger til søppelpunktsmappen. Utfør - gnist-skall.

Ulike måter å lage RDD

1. Laster inn et eksternt datasett

SparkContext's textFile-metode brukes til å laste inn dataene fra alle kilder som igjen skaper en RDD. Spark støtter et bredt spekter av kilder som dataene kan trekkes fra, for eksempel Hadoop, HBase, Amazon S3, etc. En datakilde er en tekstfil som vi har diskutert her. Bortsett fra tekstfiler støtter gnistens skala-API også andre dataformater som heelTextFiles, sekvensfil, Hadoop RDF og mange flere.

Eksempel

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

Variabelen som heter fil er en RDD, opprettet fra en tekstfil på det lokale systemet. I gnist-skall er gnistkontekstobjekt (sc) allerede opprettet og brukes til å få tilgang til gnist. TextFile er en metode for en org.apache.spark.SparkContext-klasse som leser en tekstfil fra HDFS, et lokalt filsystem eller et hvilket som helst Hadoop-støttet filsystem URI, og returnerer den som en RDD of Strings. Dermed er inngangen til denne metoden en URI og partisjonerer dataene over nodene.

2. Overføre dataene via Parallelize-metoden

En annen måte å lage RDD-er er ved å ta en eksisterende samling i minnet og sende den til å parallellisere metoden til SparkContext. Selv om læring gnister denne måten å lage RDD-er er ganske nyttig, da vi kan lage RDD-er i skallet og utføre operasjoner også. Det brukes knapt utenfor testing og prototyper, da det krever at alle dataene er tilgjengelige på den lokale maskinen. Et viktig poeng rundt parallellisering er antall partisjoner samlingen er inndelt i. Vi kan passere tallet (partisjonene) som en andre parameter i paralleliseringsmetoden, og hvis nummeret ikke er spesifisert, vil Spark bestemme basert på klyngen.

  • Uten en rekke partisjoner:

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

  • Med en rekke partisjoner:

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

3. Ved å transformere en eksisterende RDD

Det er to typer operasjoner som utføres over RDD.

  1. trans~~POS=TRUNC
  2. handlinger

Transformasjoner er operasjoner på RDD som resulterer i at det opprettes en annen RDD, mens handlinger er operasjonene som returnerer en endelig verdi til driverprogrammet eller skriver data til et eksternt lagringssystem. Kart og filter er noen transformasjonsoperasjoner. Tenk på et eksempel på filtrering av noen linjer fra en tekstfil. Opprinnelig opprettes en RDD ved å laste inn tekstfilen. Deretter bruker vi en filterfunksjon som skal filtrere ut et sett med linjer fra tekstfilen. Resultatet blir også en RDD. Filteroperasjonen endrer ikke den eksisterende inngangen RDD. I stedet returnerer den en peker til en helt ny RDD som er feilene røde. Vi kan fremdeles bruke input RDD for andre beregninger.

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

Eksemplet nedenfor viser det samme transformasjonskonseptet for en kartfunksjon. Resultatet er RDD som er blitt generert på grunn av kartfunksjonen. I kartoperasjonen vil logikken bli definert, og den bestemte logikken vil bli brukt på alle elementene i datasettet.

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

Viktige punkter å huske

  • Blant alle rammer som er tilgjengelige for øyeblikket, er Apache-gnist den siste og vinner popularitet på grunn av sin unike funksjoner og enkle tilnærming. Det eliminerer alle ulempene som Hadoop utgjør, samt opprettholder egenskapen til feiltoleranse og skalerbarhet til MapReduce. For å oppnå disse målene introduserer gnistplattform begrepet RDD.
  • Det er hovedsakelig tre måter en RDD kan opprettes der den mest grunnleggende er når vi laster datasettet.
  • Parallellmetoden er stort sett bare for testing og læringsformål.
  • En transformasjonsoperasjon ville resultere i en RDD.

Anbefalte artikler

Dette har vært en guide til RDD i Spark. Her har vi også diskutert forskjellige måter å lage RDD på, hvordan lansere Spark-Shell med viktige punkter. Du kan også gå gjennom artiklene våre for å lære mer-

  1. Hva er RDD?
  2. Hvordan installere gnist
  3. Gniststrømming
  4. Spark DataFrame
  5. Hva er gnistskjellkommandoer?
  6. Veiledning til listen over Unix Shell-kommandoer

Kategori: