Iteriere durch einen Java RDD nach Zeile

8

Ich würde gerne durch eine RDD von Strings iterieren und "tue etwas" für jeden String. Die Ausgabe sollte double[][] sein. Hier ist ein Beispiel mit einer for-Schleife. Ich verstehe, dass ich (denke ich) die Funktion foreach für Java RDDs verwenden muss. Ich habe jedoch keine Ahnung, wie man die Syntax versteht. Dokumentation ist nicht besonders hilfreich. Ich habe Java 8 nicht.

Hier ist ein Beispiel, was ich tun möchte, wenn ich eine normale for Schleife verwenden könnte.

%Vor%

Ich verstehe, dass foreach eine Funktion benötigt, die einen void return-Typ hat. Ich bin mir nicht sicher, wie ich damit arbeiten soll. Hier ist, was ich bisher versucht habe (offensichtlich ist die Syntax falsch):

%Vor%     
Katya Handler 05.08.2015, 14:04
quelle

2 Antworten

3

Wie mattinbits in den Kommentaren gesagt wurde, möchten Sie ein map anstelle eines foreach , da Sie Werte zurückgeben möchten. Was ein map im Grunde ist, ist die Transformation Ihrer Daten: Sie führen für jede Zeile Ihrer RDD eine Operation aus und geben für jede Zeile einen Wert zurück. Was Sie brauchen, können Sie so erreichen:

%Vor%

Damit Sie wissen, wie Spark funktioniert, führen Sie Aktionen oder Transformationen auf Ihrer RDD aus. Zum Beispiel transformieren wir unsere RDD mit einer map -Funktion. Sie müssen diese Funktion selbst erstellen, diesmal mit einem anonymen org.apache.spark.api.java.function.Function , das Sie zwingt, die Methode call zu überschreiben, wo Sie eine Zeile Ihrer RDD erhalten und einen Wert zurückgeben.

    
Balduz 05.08.2015, 14:48
quelle
3

Nur weil es interessant ist, die Ausführlichkeit der Java vs Scala API für Spark zu vergleichen, ist hier eine Scala-Version:

%Vor%     
mattinbits 05.08.2015 15:29
quelle

Tags und Links