Ich versuche, alle eindeutigen Werte eines Spark RDD, durch Komma trennen. Dies ist mein Code:Foreach auf einem RDD distinct funktioniert nicht
def genPredicateIn(data: RDD[String], attribute: String): String = {
var s: String = attribute + " in {"
val distinct = data.distinct
distinct.foreach(s += ", " + _)
s += "}"
s
}
Aber es gibt mir nur "attribute in {}"
, warum? Was ist mein Fehler?
Es funktioniert, wenn ich val array <- data.distinct.collect
schreibe und darauf iterieren. Warum?
Wenn das funktioniert, dann würden Sie 'attribute in {, data1, data2}} trotzdem bekommen –
ja, das ist nicht mein Problem –
Ich glaube nicht, dass ein Lambda eine Zuweisung enthalten kann. Warum können Sie die RDD nicht sammeln und dann die Verbindung herstellen? Das ist im Wesentlichen das, was du ohnehin tust. Der Grund, warum Sie keine Zuweisung durchführen können, ist, dass Spark Ihre Zeichenfolge nicht an alle Worker-Knoten übergeben und sie mit den Partitionen von Daten verketten kann. –