как получить значение из ключа, значение из задания сокращения карты в scala

#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 для создания локального Scala Map , который вы можете запросить.

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 значению?