Spark 词频统计 – 控制台

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次。

    原文作者:桥梁
    原文地址: https://zhuanlan.zhihu.com/p/70452602
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞