Вы можете сделать это, используя spark и Scala.сохраните данные в файл и создайте RDD, используя sparkContext, как показано ниже.Примечание: sc
представляет sparkContext
val stringsRDD=sc.textFile("C:\\spark\\programs\\strings.txt")
stringsRDD - это СДП строк, теперь вы можете перебирать каждую строку и разбивать ее на слова
val wordsRDD=stringsRDD.flatMap(str=>str.split(" "))
WordsRDD содержит
res3: Array[String] = Array(Apple, Banana, Tilamook, Butter, Gala, Apple, Pinto, Beans, Salt, Granny, Smith, Apple, Generic, Butter, Butter, Black, Beans, Beans)
Создайте простую карту, где ключ - это слово, а значение - 1
val wordMapRDD=wordsRDD.map(word=>(word->1))
WordMapRDD содержит
res4: Array[(String, Int)] = Array((Apple,1), (Banana,1), (Tilamook,1), (Butter,1), (Gala,1), (Apple,1), (Pinto,1), (Beans,1), (Salt,1), (Granny,1), (Smith,1), (Apple,1), (Generic,1), (Butter,1), (Butter,1), (Black,1), (Beans,1), (Beans,1))
Теперь вы можете легко применить reduceByKey
функцию
val wordCountRDD=wordMapRDD.reduceByKey(_+_)
wordCountRDD содержит
res5: Array[(String, Int)] = Array((Tilamook,1), (Butter,3), (Salt,1), (Pinto,1), (Apple,3), (Gala,1), (Black,1), (Generic,1), (Granny,1), (Beans,3), (Smith,1), (Banana,1))
Примечание. Если вы хотите увидеть, что содержится в СДР, вы должны использовать метод collect
, как показано ниже
wordsRDD.collect