#scala #apache-spark #mapreduce #rdd
#scala #apache-spark #mapreduce #rdd
Вопрос:
Я пытаюсь получить значение из задания уменьшения карты, т.Е. 11 из hinein.
(mutuelle,1)
(hinein.,11)
(Pfennig,1)
Я могу распечатать все значения, но как мне найти только конкретные?
val counts = books.flatMap(line => line.split(" "))
val MappedRDD = counts.map(word => (word, 1))
val myReducedRDD = MappedRDD.reduceByKey(_ _)
//myReducedRDD.collect().foreach(println)
val rdd2 = myReducedRDD.map(f => (f))
rdd2.foreach(println)
Комментарии:
1.Вероятно, вам следовало использовать
reduceByKeyLocally
для создания локального ScalaMap
, который вы можете запросить.2. как бы я тогда запросил?
3. Используя любую из операций, предоставляемых
Map
, напримерmap("key")
, илиmap.get("key")
илиmap.getOrElse("key", default = 0)
, проверьте scaladoc — и сделайте себе одолжение и изучите хотя бы основы Scala , прежде чем использовать что-то такое большое и сложное, как Spark .
Ответ №1:
Вы пробовали использовать filter?
val myReducedRDD = MappedRDD.reduceByKey(_ _)
myReducedRDD
.filter { case (key, value) => key == "hinein" }
.map { case (key, value) => value } // also can use .map(_._2)
.foreach(println)
// to assign to val
val result = myReducedRDD
.filter { case (key, value) => key == "hinein" }
.map { case (key, value) => value }
.collect()(0)
Комментарии:
1. это возвращает (hinein.,11), как мне тогда просто присвоить 11 значению?