Inleiding tot RDD in Spark

Een RDD die staat voor Resilient Distributed Dataset is een van de belangrijkste concepten in Spark. Het is een alleen-lezen verzameling records die is gepartitioneerd en verdeeld over de knooppunten in een cluster. Het kan worden omgezet in een andere RDD door middel van bewerkingen en zodra een RDD is gemaakt, kan deze niet worden gewijzigd, maar wordt er een nieuwe RDD gemaakt.

Een belangrijk kenmerk waardoor Spark de beperkingen van Hadoop heeft overwonnen, is via RDD, omdat Resilient Distributed Datasets (RDD) de gegevens in plaats van de gegevens repliceert over de knooppunten in een cluster en de gegevens met behulp van een lijndiagram herstelt. In Hadoop werden de gegevens redundant opgeslagen tussen de machines die de eigenschap fouttolerantie hadden. Een RDD is dus een fundamentele abstractie die Spark biedt voor gedistribueerde gegevens en berekeningen.

De verschillende manieren om een ​​RDD te maken zijn

  • Een externe gegevensset laden
  • Gegevens doorgeven via Parallelize-methode
  • Door een bestaande RDD te transformeren

Laten we elk van hen in detail bespreken, maar daarvoor moeten we een spark-shell instellen die het stuurprogramma van spark is. In dit artikel hebben we de coderegels in scala opgenomen. RDD's kunnen elk type Python-, Java- of Scala-objecten hebben, inclusief door de gebruiker gedefinieerde klassen. Dus hieronder zijn de stappen die moeten worden gevolgd om spark-shell te lanceren.

Spark-Shell lanceren

Stap 1: Spark downloaden en uitpakken. Download de huidige versie van Spark van de officiële website. Pak het gedownloade bestand uit op een willekeurige locatie in uw systeem.

Stap 2: Scala instellen

  • Scala downloaden van scala lang.org
  • Scala installeren
  • Stel SCALA_HOME omgevingsvariabele in & zet de PATH variabele op de bin directory van scala.

Stap 3: Start de vonkenmantel. Open de opdrachtprompt en navigeer naar de map bin van spark. Uitvoeren-vonk-shell.

Verschillende manieren om RDD te maken

1. Een externe gegevensset laden

De textFile-methode van SparkContext wordt gebruikt voor het laden van de gegevens uit elke bron die op zijn beurt een RDD creëert. Spark ondersteunt een breed scala aan bronnen waaruit de gegevens kunnen worden opgehaald, zoals Hadoop, HBase, Amazon S3, enz. Eén gegevensbron is een tekstbestand dat we hier hebben besproken. Naast tekstbestanden ondersteunt spark's scala API ook andere gegevensformaten zoals heleTextFiles, sequentiebestand, Hadoop RDF en nog veel meer.

Voorbeeld

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

De variabele met de naam file is een RDD, gemaakt op basis van een tekstbestand op het lokale systeem. In spark-shell is spark context object (sc) al gemaakt en wordt gebruikt om toegang te krijgen tot spark. TextFile is een methode van een org.apache.spark.SparkContext-klasse die een tekstbestand van HDFS, een lokaal bestandssysteem of een door UIoop ondersteunde bestandssysteem URI leest en retourneert als een RDD van Strings. De invoer voor deze methode is dus een URI en verdeelt de gegevens over de knooppunten.

2. De gegevens doorgeven via de Parallelize-methode

Een andere manier om RDD's te maken is door een bestaande verzameling in het geheugen te nemen en deze door te geven aan de parallellisatiemethode van SparkContext. Hoewel leren deze manier van het maken van RDD's opwekt, is het heel nuttig omdat we de RDD's in de shell kunnen maken en ook bewerkingen kunnen uitvoeren. Het wordt nauwelijks buiten tests en prototyping gebruikt omdat het vereist dat alle gegevens beschikbaar zijn op de lokale machine. Een belangrijk punt over parallellisatie is het aantal partities waarin de collectie is onderverdeeld. We kunnen het nummer (partities) doorgeven als een tweede parameter in de parallellisatiemethode en als het nummer niet wordt opgegeven, beslist Spark op basis van het cluster.

  • Zonder een aantal partities:

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

  • Met een aantal partities:

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

3. Door een bestaande RDD te transformeren

Er zijn twee soorten bewerkingen die via RDD worden uitgevoerd.

  1. transformaties
  2. acties

Transformaties zijn bewerkingen op RDD die resulteren in het creëren van een andere RDD, terwijl acties de bewerkingen zijn die een definitieve waarde aan het stuurprogramma retourneren of gegevens naar een extern opslagsysteem schrijven. Map en filter zijn enkele transformatiebewerkingen. Overweeg een voorbeeld van het filteren van enkele regels uit een tekstbestand. Aanvankelijk wordt een RDD gemaakt door het tekstbestand te laden. Vervolgens passen we een filterfunctie toe die een reeks regels uit het tekstbestand filtert. Het resultaat zal ook een RDD zijn. De filterbewerking wijzigt de bestaande invoer-RDD niet. In plaats daarvan retourneert het een pointer naar een geheel nieuwe RDD, die de fouten rood is. We kunnen de invoer-RDD nog steeds gebruiken voor andere berekeningen.

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

Het onderstaande voorbeeld toont hetzelfde transformatieconcept voor een kaartfunctie. Het resultaat is de RDD die is gegenereerd vanwege de kaartfunctie. In de kaartbewerking wordt de logica gedefinieerd en die specifieke logica wordt toegepast op alle elementen van de gegevensset.

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

Belangrijke punten om te onthouden

  • Van alle frameworks die momenteel beschikbaar zijn, is Apache Spark de nieuwste en wint aan populariteit vanwege de unieke functies en eenvoudige aanpak. Het elimineert alle nadelen van Hadoop en behoudt de fouttolerantie- en schaalbaarheidseigenschap van MapReduce. Om deze doelen te bereiken introduceert Spark Platform het concept van RDD.
  • Er zijn hoofdzakelijk drie manieren waarop een RDD kan worden gemaakt waar de meest basale is wanneer we de gegevensset laden.
  • De parallellisatiemethode is algemeen alleen voor test- en leerdoeleinden.
  • Een transformatiebewerking zou resulteren in een RDD.

Aanbevolen artikelen

Dit is een gids voor RDD in Spark geweest. Hier hebben we ook verschillende manieren besproken om RDD te maken, hoe Spark-Shell met belangrijke punten te lanceren. U kunt ook door onze gegeven artikelen gaan voor meer informatie-

  1. Wat is RDD?
  2. Hoe Spark te installeren
  3. Vonken streamen
  4. Spark DataFrame
  5. Wat is Spark Shell-opdrachten?
  6. Handleiding voor de lijst met Unix Shell-opdrachten

Categorie: