Introduktion till RDD i Spark

En RDD som står för Resilient Distribuerad Dataset är ett av de viktigaste begreppen i Spark. Det är en skrivskyddad samling av poster som är partitionerad och distribuerad över noderna i ett kluster. Det kan förvandlas till några andra RDD genom operationer och när en RDD skapas kan den inte ändras snarare en ny RDD kommer att skapas.

En viktig funktion genom vilken Spark övervann Hadoops begränsningar är via RDD eftersom snarare än att replikera uppgifterna, upprätthåller Resilient Distribuerad Datasets (RDD) data över noderna i ett kluster och kommer att återställa data med hjälp av linjegraf. I Hadoop lagrades uppgifterna överflödigt bland maskinerna som gav egenskapen av feltolerans. Således är en RDD en grundläggande abstraktion som tillhandahålls av Spark för distribuerad data och beräkning.

De olika sätten att skapa en RDD är

  • Laddar en extern datauppsättning
  • Vidarebefordra data via metoden Parallelize
  • Genom att omvandla en befintlig RDD

Låt oss diskutera var och en av dem i detalj, men innan detta måste vi skapa ett gnistskal som är gnistförarprogrammet. I den här artikeln har vi inkluderat kodraderna i skala. RDD: er kan ha alla typer av Python-, Java- eller Scala-objekt, inklusive användardefinierade klasser. Således nedan är stegen som ska följas för att starta gnistskal.

Starta gnistskal

Steg 1: Ladda ner och packa upp gnist. Ladda ner den nuvarande versionen av gnista från den officiella webbplatsen. Packa upp den nedladdade filen till vilken plats som helst i ditt system.

Steg 2: Setup Scala

  • Ladda ner scala från scala lang.org
  • Installera scala
  • Ställ in SCALA_HOME-miljövariabeln och ställ in PATH-variabeln till papperskorgen för scala.

Steg 3: Starta gnistskalet . Öppna kommandotolken och navigera till gnistfackmappen. Utför - gnista-skal.

Olika sätt att skapa RDD

1. Laddar en extern datauppsättning

SparkContext's textFile-metod används för att ladda upp data från alla källor som i sin tur skapar en RDD. Spark stöder ett brett spektrum av källor från vilka data kan dras, till exempel Hadoop, HBase, Amazon S3, etc. En datakälla är en textfil som vi har diskuterat här. Bortsett från textfiler stöder gnistens skala API också andra dataformat som helaTextFiles, sekvensfil, Hadoop RDF och många fler.

Exempel

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

Variabeln som heter fil är en RDD, skapad från en textfil i det lokala systemet. I gnistskal har gnistkontextobjekt (sc) redan skapats och används för att få åtkomst till gnista. TextFile är en metod för en org.apache.spark.SparkContext-klass som läser en textfil från HDFS, ett lokalt filsystem eller något URI-stött filsystem URI och returnerar den som en RDD av strängar. Således är ingången för denna metod en URI och partitionerar data över noderna.

2. Vidarebefordra data via metoden Parallelize

Ett annat sätt att skapa RDD: er är att ta en befintlig samling i minnet och skicka den för att parallellisera metoden i SparkContext. Medan lärande gnista är detta sätt att skapa RDD: er ganska användbart eftersom vi kan skapa RDD: er i skalet och utföra operationer också. Det används knappast utanför tester och prototyper eftersom det kräver att all data är tillgänglig på den lokala maskinen. En viktig punkt för parallellisering är antalet partitioner som samlingen är indelad i. Vi kan skicka antalet (partitioner) som en andra parameter i parallelliseringsmetoden och om numret inte anges kommer Spark att bestämma utifrån klustret.

  • Utan ett antal partitioner:

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

  • Med ett antal partitioner:

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

3. Genom att omvandla en befintlig RDD

Det finns två typer av operationer som utförs via RDD.

  1. transformationer
  2. Handlingar

Transformationer är operationer på RDD som resulterar i skapandet av en annan RDD medan åtgärder är de operationer som returnerar ett slutligt värde till drivprogrammet eller skriver data till ett externt lagringssystem. Karta och filter är några omvandlingsoperationer. Överväg ett exempel på att filtrera bort några rader från en textfil. Ursprungligen skapas en RDD genom att läsa in textfilen. Sedan tillämpar vi en filterfunktion som kommer att filtrera bort en uppsättning rader från textfilen. Resultatet blir också en RDD. Filteroperationen ändrar inte befintlig ingång RDD. Istället returnerar den en pekare till en helt ny RDD, vilket är felet rött. Vi kan fortfarande använda input RDD för andra beräkningar.

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

Exemplet nedan visar samma transformationskoncept för en kartfunktion. Resultatet är RDD som har genererats på grund av kartfunktionen. I kartoperationen kommer logiken att definieras och den speciella logiken kommer att tillämpas på alla element i datasatsen.

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

Viktiga punkter att komma ihåg

  • Bland alla de ramar som för närvarande finns tillgängliga är Apache-gnisten den senaste och vinner popularitet på grund av dess unika funktioner och enkla strategi. Det eliminerar alla nackdelar som Hadoop medför samt att bibehålla feltolerans- och skalbarhetsegenskapen för MapReduce. För att uppnå dessa mål introducerar gnistplattform begreppet RDD.
  • Det finns huvudsakligen tre sätt på vilka en RDD kan skapas där det mest grundläggande är när vi laddar datasatsen.
  • Parallellmetoden är vanligtvis endast för test- och inlärningsändamål.
  • En transformationsoperation skulle resultera i en RDD.

Rekommenderade artiklar

Detta har varit en guide till RDD i Spark. Här har vi också diskuterat olika sätt att skapa RDD, hur man startar Spark-Shell med viktiga punkter. Du kan också gå igenom våra givna artiklar för att lära dig mer-

  1. Vad är RDD?
  2. Hur man installerar gnista
  3. Spark Streaming
  4. Spark DataFrame
  5. Vad är gnistskal-kommandon?
  6. Guide till listan över Unix Shell-kommandon

Kategori: