Ich bekomme eine Warnung, wenn Sie eine RDD in einem für den Einsatz verwenden, und ich bin mir nicht sicher, ob es etwas ist, was ich falsch mache. Wenn ich dies tun:Warnung bei der Verwendung von RDD zum Verständnis
val sc = new SparkContext(...)
val anRDD = sc.parallelize(List(
("a", List(1, 2, 3)),
("b", List(4),
("c", List(5, 6))
)
for {
(someString, listOfInts) <- anRDD
someInt <- listOfInts
} yield (someString, someInt)
Dann bekomme ich diese Ausgabe:
warning: `withFilter' method does not yet exist on org.apache.spark.rdd.RDD[(String, List[Int])], using `filter' method instead
(s, li) <- rl
Aber es ist immer noch erfolgreich eine FlatMappedRDD return [(String, Int)]. Mache ich etwas falsch? Oder ist es sicher, diese Warnung zu ignorieren?
Update: Ich würde auch als Antwort akzeptieren, wie das For-Verständnis diese Operationen zu map/flatMap/Filter-Aufrufe konvertiert, da ich nicht glaubte, dass es Filter oder mit Filteraufrufen erforderlich wäre. Ich nahm an, es ähnlich entspricht etwas sein würde:
anRDD.flatMap(tuple => tuple.map(someInt => (tuple._1, someInt)))
Aber dies schließt keinen Filter oder withFilter Anrufe, die die Quelle der Warnung zu sein scheint.
Oh, ich benutze Spark 1.2.0, Scala 2.10.4, und das ist alles innerhalb der REPL.
Nicht unbedingt. Woher kommt der Aufruf von withFilter? Ich nehme an (wie ich immer mit Scala), dass es wegen einer impliziten Konvertierung irgendwo ist, aber ich sehe nicht, warum es hier wichtig ist, da das Verständnis erkennt, dass es heißt .filter, nicht .withFilter – jayhutfles
Weil die Präferenz Verwenden Sie withFilter per Warnung. Es fällt in diesem Fall nur auf die Filtermethode zurück. –
@jayhutfles Ich habe gerade mehr hinzugefügt, zeigt die Präferenz für withFilter –