Word Count是经典的入门程序。今天讲如何在控制台里实现。
控制台方式
打开终端,输入如下命令启动Scala Spark
spark-shell
数据准备
一般是从文本文件里读取。这里为了考虑测试方便,直接从scala建立RDD。
// 模拟文件的多行
val text = "hello world\nhello scala\nhello python"
// 每一行
val lines = text.split("\n")
// 变成spark的RDD
val rdd = sc.parallelize(lines)
// 打印看具体内容
rdd.foreach(println)
输入出结果如下
hello python
hello scala
hello world
单词
用flatMap函数,把每行的文字拆成words
val words = rdd.flatMap(_.split(" "))
words.foreach(println)
结果如下
hello
scala
hello
hello
python
world
单词和频率
依靠map函数,给每个单词添加词频1
val wordsWithCount = words.map(w => (w, 1))
wordsWithCount.foreach(println)
结果如下
(hello,1)
(scala,1)
(hello,1)
(world,1)
(hello,1)
(python,1)
统计词频
利用reduceBy函数
val wordCounts = wordsWithCount.reduceByKey(_ + _)
wordCounts.foreach(println)
结果如下
(python,1)
(scala,1)
(hello,3)
(world,1)
可以看出hello出现了3次。