使用Scala查找键

时间:2018-05-01 21:48:57

标签: scala apache-spark

我需要在文本文件中找到最常见的“不常见”字样。我有一个常用单词列表和我文件中最常用单词的地图。

假设我有

val commonWords = List("the","a","I","is")

和地图

val mostUsedWordsFromTextFile

我怎样才能在地图上覆盖mostUsedWordsFromTextFile,直到我在列表commonWords中找到而不是这个词?

1 个答案:

答案 0 :(得分:1)

假设您的输入是:

val input = RDD(("hello", 4), ("the", 2), ("world", 6))

然后你可以:

  • 过滤掉常用字词的一部分
  • 从其余的词中选出最受欢迎的词

这样:

val commonWords = Set("the", "a", "I", "is")

val result = input
  .filter { case (word, count) => !commonWords.contains(word) } // RDD(("hello", 4), ("world", 6))
  .takeOrdered(1)(Ordering[Int].on { case (word, count) => -count }) // Array(("world", 6))
  .head // ("world", 6)
  ._1 // world

有关在maxBy上实施RDD的不同方式,请参阅How to find max value in pair RDD?