2016-05-28 12 views
4

Ich habe einen Code so etwas und ich wan, um gegen JavaRDD statt RDD arbeiten Also mache ich hier Umwandlung. Ich würde gerne die Auswirkungen dieser Transformation auf die Leistung wissen, wenn ich mit GBs Daten zu tun habe.Leistung Auswirkungen von RDD auf JavaRDD Konvertierung

RDD<String> textFile = sc.textFile(filePath, 2); 
JavaRDD<String> javaRDD = textFile.toJavaRDD(); 

Dies ist eine breite oder enge Transformation? Was ist der Unterschied zwischen JavaRDD und RDD?

Antwort

11

Es gibt keine erhebliche Leistungseinbußen - JavaRDD ist ein einfacher Wrapper um RDD nur um Anrufe von Java-Code bequemer zu machen. Es hält das ursprüngliche RDD ad Mitglied, und ruft diese Methode des Mitglieds an einem Methodenaufruf, zum Beispiel (aus JavaRDD.scala):

def cache(): JavaRDD[T] = wrapRDD(rdd.cache()) 

wrapRDD wie new JavaRDD[T](rdd) etwas läuft darauf hinaus, so dass die einzige Leistungseinbuße eine dünne Schaffung Java-Objekt für jeden Methodenaufruf, aber das ist völlig vernachlässigbar, da es nicht pro Element in der RDD, sondern einmal für das gesamte Objekt durchgeführt wird.

+0

Es beantwortet meine Abfrage. Danke :) – BDR

+0

so tis ist nur eine Dienstprogrammfunktion, die nicht entweder eng oder breit fallen wird. Bin ich hier rit? – BDR

+2

@BalajiReddy Meine Antwort [hier] (http://stackoverflow.com/a/36196735/1870803) könnte mehr Licht auf die tatsächliche Transformation werfen. –

Verwandte Themen