Ich übe in der Spark-Shell nach Arten. Ich habe eine rdd mit etwa 10 Spalten/Variablen. Ich mag die ganze rdd auf den Werten der Spalte 7.Wie spalte ich ein Spark rdd Array [(String, Array [String])]?
rdd
org.apache.spark.rdd.RDD[Array[String]] = ...
Von sortieren, was ich sammle die Art und Weise zu tun, ist durch die Verwendung sortByKey, die wiederum nur auf Paare funktionieren. So kartiert ich es so würde ich ein Paar hat, bestehend aus column7 (String-Werten) und das vollständige Original rdd (Array von Strings)
rdd2 = rdd.map(c => (c(7),c))
rdd2: org.apache.spark.rdd.RDD[(String, Array[String])] = ...
ich dann sortByKey gelte nach wie vor kein Problem ...
rdd3 = rdd2.sortByKey()
rdd3: org.apache.spark.rdd.RDD[(String, Array[String])] = ...
Aber jetzt Wie spalte ich ab, sammle und speichere das sortierte Original rdd von rdd3 (Array [String])? Immer wenn ich einen Split auf rdd3 versuche, gibt es mir einen Fehler:
val rdd4 = rdd3.map(_.split(',')(2))
<console>:33: error: value split is not a member of (String, Array[String])
Was mache ich hier falsch? Gibt es andere, bessere Möglichkeiten, eine RDD auf einer ihrer Spalten zu sortieren?
ich nicht bekommen Sie genau wollen. meinst du, dass du jeden String innerhalb von Array [String] teilen willst? – jtitusj
Sie haben versucht, Tuple zu teilen, deshalb ist es der Fehler –
@John Nein Ich möchte rdd3 (ein sortiertes Paar von Spalte7 und die ursprüngliche rdd) teilen, also würde ich meine ursprüngliche rdd zurück haben, aber immer noch in Spalte 7 sortiert ... ohne tatsächlich die vorangestellte Spalte 7 (wie in rdd3). Ich habe die Frage leicht bearbeitet, ist es jetzt klarer? –