2016-07-29 18 views

Antwort

1

In Spark alles und alles läuft auf RDD. d.h. einschließlich Datenrahmen. AFAIK, gibt es keine andere Möglichkeit für Spark und hbase, wenn Sie als verteilte Framework verwenden Funke, sein Ziel durch RDD erreicht, die

  • Immutable
  • partitioniert sind
  • Fehlertolerante
  • Erstellt von grobkörnigem Operationen
  • Träge
  • ausgewertet Kann
01 beibehalten werden

Unveränderlichkeit und Partitionierung RDDs bestehen aus einer Sammlung von Datensätzen, die partitioniert sind. Die Partition ist die Grundeinheit der Parallelität in einer RDD, und jede Partition ist eine logische Division von Daten, die unveränderlich ist und durch einige Transformationen auf vorhandenen Partitionen erzeugt wird. Die Unverwechselbarkeit hilft, Konsistenz in Berechnungen zu erreichen.

Benutzer können ihre eigenen Kriterien für die Partitionierung auf Basis von Schlüsseln definieren, an denen sie bei Bedarf mehrere Datensätze zusammenführen möchten.

Grobkörnige Operationen (Transformationen und Aktionen) Grobkörnige Operationen sind Operationen, die auf alle Elemente in Datasets angewendet werden. Zum Beispiel - eine Map-, Filter- oder groupBy-Operation, die für alle Elemente in einer Partition von RDD ausgeführt wird.

Transformationen und Aktionen

RDDs kann nur durch das Lesen von Daten aus einem stabilen Speicher wie HDFS/Hbase oder durch Transformationen auf bestehenden RDDs erstellt werden. Alle Berechnungen auf RDDs sind entweder Transformationen oder Aktionen. enter image description here

Fehlertoleranz

Seit RDDs über eine Reihe von Transformationen erstellt werden, protokolliert er diese Transformationen, anstatt tatsächliche data.Graph dieser Transformationen ein produzieren RDD als Lineage Graph genannt wird.

Scala

firstRDD=spark.textFile("hdfs://...") 
secondRDD=firstRDD.filter(someFunction); 
thirdRDD = secondRDD.map(someFunction); 
result = thirdRDD.count() 

enter image description here

Lazy Evaluation Funken berechnet RDDs lazily das erste Mal, wenn sie in einer Aktion verwendet werden, so daß es Pipeline-Transformationen. Im obigen Beispiel wird RDD nur ausgewertet, wenn die count() Aktion aufgerufen wird.

Persistenz Benutzer können angeben, welche RDDs sie wiederverwenden und eine Speicherstrategie für sie auswählen (z. B. In-Memory-Speicher oder auf Disk usw.))

Diese Eigenschaften von RDDs machen sie für schnelle Berechnungen nützlich.

Bitte sehen Source : what is RDD and Why we need it