Spark——统计文本中单词出现的次数

示例一:统计所有单词出现的次数

1、在本地创建文件并上传到hdfs中

#vin data.txt
//将文件上传到hadoop的根目录下
#hdfs dfs -put data.txt  /

2、在spark中,创建一个RDD并读取文件

%spark
var data = sc.textFile("/data.txt")
data.collect

3、将读取到的文本使用flatMap方法(数据流映射)组合split方法拆分为单个单词

//注意:split("")引号中没有空格是以单个字母的形式拆分
val splitData = data.flatMap(line => line.split(" ")) splitData.collect

4、对每个单词执行映射k-value,k是具体的单词,value都设置为1

var mapData = splitData.map(word => (word,1))
mapData.collect

5、使用reduceByKey()方法进行聚合累加并输出结果

var reduceData = mapData.reduceByKey(_+_)
reduceData.collect

示例二:统计指定单词出现的次数

//统计本文中"is"出现的次数
data.filter(line => line.contains("is")).count()

示例三:(更复杂的RDD操作)找到文本的一行中最多的单词数量

data.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

 tip:对于大型数据,可以将数据先加入缓存

例如:
data.cache() data.count()

 

 

posted @ 2022-01-25 14:06  干了这瓶老干妈  阅读(1320)  评论(0编辑  收藏  举报
Live2D