Einführung in RDD in Spark

Ein RDD, das für Resilient Distributed Dataset steht, ist eines der wichtigsten Konzepte in Spark. Es handelt sich um eine schreibgeschützte Sammlung von Datensätzen, die auf die Knoten in einem Cluster aufgeteilt und verteilt werden. Sie kann durch Operationen in eine andere RDD umgewandelt werden, und sobald eine RDD erstellt wurde, kann sie nicht mehr geändert werden, sondern es wird eine neue RDD erstellt.

Eine wichtige Funktion, mit der Spark die Einschränkungen von Hadoop überwunden hat, ist RDD, da RDD (Resilient Distributed Datasets) die Daten nicht repliziert, sondern über die Knoten in einem Cluster verwaltet und die Daten mithilfe eines Herkunftsdiagramms wiederherstellt. In Hadoop wurden die Daten redundant auf den Maschinen gespeichert, die die Eigenschaft der Fehlertoleranz bieten. Somit ist eine RDD eine grundlegende Abstraktion, die von Spark für verteilte Daten und Berechnungen bereitgestellt wird.

Es gibt verschiedene Möglichkeiten, eine RDD zu erstellen

  • Laden eines externen Datensatzes
  • Übergeben der Daten über die Parallelize-Methode
  • Durch die Transformation eines vorhandenen RDD

Lassen Sie uns jeden von ihnen im Detail besprechen, aber vorher müssen wir eine Funkenhülle aufbauen, die das Treiberprogramm für Funken ist. In diesem Artikel haben wir die Codezeilen in scala aufgenommen. RDDs können alle Arten von Python-, Java- oder Scala-Objekten enthalten, einschließlich benutzerdefinierter Klassen. Im Folgenden sind die Schritte aufgeführt, die zum Starten von Spark-Shell ausgeführt werden müssen.

Spark-Shell starten

Schritt 1: Funken herunterladen und entpacken. Laden Sie die aktuelle Version von spark von der offiziellen Website herunter. Entpacken Sie die heruntergeladene Datei an einen beliebigen Ort in Ihrem System.

Schritt 2: Scala einrichten

  • Laden Sie scala von scala lang.org herunter
  • Installieren Sie Scala
  • Setzen Sie die Umgebungsvariable SCALA_HOME und die Variable PATH auf das bin-Verzeichnis von scala.

Schritt 3: Starten Sie die Funkenhülle . Öffnen Sie die Eingabeaufforderung und navigieren Sie zum Ordner "bin" von spark. Execute-Spark-Shell.

Verschiedene Möglichkeiten zum Erstellen von RDD

1. Laden eines externen Datensatzes

Die textFile-Methode von SparkContext wird zum Laden der Daten aus einer beliebigen Quelle verwendet, wodurch wiederum eine RDD erstellt wird. Spark unterstützt eine Vielzahl von Quellen, aus denen die Daten abgerufen werden können, z. B. Hadoop, HBase, Amazon S3 usw. Eine Datenquelle ist eine Textdatei, die wir hier beschrieben haben. Neben Textdateien unterstützt die scala-API von spark auch andere Datenformate wie wholeTextFiles, sequence file, Hadoop RDF und viele mehr.

Beispiel

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

Die Variable file ist eine RDD, die aus einer Textdatei auf dem lokalen System erstellt wurde. In der Spark-Shell wurde das Spark-Kontextobjekt (sc) bereits erstellt und wird für den Zugriff auf den Spark verwendet. TextFile ist eine Methode einer org.apache.spark.SparkContext-Klasse, die eine Textdatei aus HDFS, einem lokalen Dateisystem oder einem von Hadoop unterstützten Dateisystem-URI liest und als RDD of Strings zurückgibt. Die Eingabe für diese Methode ist daher ein URI und verteilt die Daten auf die Knoten.

2. Weitergabe der Daten über die Parallelize-Methode

Eine andere Möglichkeit zum Erstellen von RDDs besteht darin, eine vorhandene speicherinterne Auflistung zu übernehmen und an die Parallelisierungsmethode von SparkContext zu übergeben. Während des Lernens ist diese Art der Erstellung von RDDs sehr nützlich, da wir die RDDs in der Shell erstellen und auch Operationen ausführen können. Es wird außerhalb von Tests und Prototypen kaum verwendet, da alle Daten auf dem lokalen Computer verfügbar sein müssen. Ein wichtiger Punkt beim Parallelisieren ist die Anzahl der Partitionen, in die die Sammlung unterteilt ist. Wir können die Zahl (Partitionen) als zweiten Parameter in der Parallelisierungsmethode übergeben, und wenn die Zahl nicht angegeben wird, entscheidet Spark basierend auf dem Cluster.

  • Ohne eine Anzahl von Partitionen:

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

  • Mit mehreren Partitionen:

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

3. Durch Transformieren eines vorhandenen RDD

Es gibt zwei Arten von Operationen, die über RDD ausgeführt werden.

  1. Transformationen
  2. Aktionen

Transformationen sind Operationen auf RDD, die zur Erstellung einer weiteren RDD führen, während Aktionen Operationen sind, die einen endgültigen Wert an das Treiberprogramm zurückgeben oder Daten auf ein externes Speichersystem schreiben. Map und Filter sind einige Transformationsoperationen. Betrachten Sie ein Beispiel für das Herausfiltern einiger Zeilen aus einer Textdatei. Zunächst wird durch Laden der Textdatei eine RDD erstellt. Dann wenden wir eine Filterfunktion an, die eine Reihe von Zeilen aus der Textdatei herausfiltert. Das Ergebnis wird auch ein RDD sein. Die Filteroperation ändert den vorhandenen RDD-Eingang nicht. Stattdessen wird ein Zeiger auf eine völlig neue RDD zurückgegeben, bei der die Fehler rot sind. Wir können die Eingabe RDD weiterhin für andere Berechnungen verwenden.

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

Das folgende Beispiel zeigt dasselbe Transformationskonzept für eine Kartenfunktion. Das Ergebnis ist die RDD, die aufgrund der Map-Funktion generiert wurde. Bei der Kartenoperation wird die Logik definiert und diese bestimmte Logik wird auf alle Elemente des Datensatzes angewendet.

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

Wichtige Punkte zu beachten

  • Unter allen derzeit verfügbaren Frameworks ist Apache spark das neueste und erfreut sich aufgrund seiner einzigartigen Funktionen und seines einfachen Ansatzes zunehmender Beliebtheit. Es beseitigt alle Nachteile von Hadoop und behält die Fehlertoleranz und Skalierbarkeit von MapReduce bei. Um diese Ziele zu erreichen, führt spark platform das RDD-Konzept ein.
  • Es gibt hauptsächlich drei Möglichkeiten, wie eine RDD erstellt werden kann, wobei die einfachste Möglichkeit das Laden des Datensatzes ist.
  • Die Parallelisierungsmethode dient weitgehend nur zu Test- und Lernzwecken.
  • Eine Transformationsoperation würde zu einer RDD führen.

Empfohlene Artikel

Dies war ein Leitfaden für RDD in Spark. Hier haben wir auch verschiedene Möglichkeiten zum Erstellen von RDD besprochen, wie Spark-Shell mit wichtigen Punkten gestartet werden kann. Sie können auch in unseren Artikeln nachlesen, um mehr zu erfahren.

  1. Was ist RDD?
  2. So installieren Sie Spark
  3. Spark-Streaming
  4. Spark DataFrame
  5. Was sind Spark-Shell-Befehle?
  6. Leitfaden zur Liste der Unix-Shell-Befehle

Kategorie: