天天看点

Spark综合小案例之莎士比亚诗文集词频统计

0x00 教程内容

0x01 数据准备

1. 数据获取

2. 数据内容

0x02 代码实现

1. 启动spark-shell

2. 测试代码

0x03 校验结果

1. 查看是否有统计结果

0xFF 总结

数据准备

代码实现

校验结果

案例背景:这是某年“高校云计算应用创新大赛”的一道题目。

学习内容:主要进行 RDD 的相关操作,包括转换算子和动作算子。

案例目的:统计莎士比亚诗文集中出现频次最高的100个单词,但是这100个单词中不包括停词表中那些没有实际意义的词。

案例思路:将莎士比亚诗文集文件夹下面的多个文件都读成 RDD,然后过滤掉停词表中的单词,统计频次最高的100个单词,并且保存结果在特定的文件夹即可。思路与Spark的WordCount案例相似,文章参考:IntelliJ IDEA开发Spark案例之WordCount,只是难度稍微加大了一点点而已。

案例关键:

1、读取多个文件生成 RDD

2、过滤掉某个文件中的单词,所以这些词也应该以某种方式存在

3、频次最高的100个单词,所以需要排序

方式一:

链接地址:邵奈一的学习库 的datas文件夹里查找

具体下载链接:点击下载

方式二:

关注公众号/微信获取:邵奈一公众号、邵奈一WeChat

莎士比亚诗文集:

Spark综合小案例之莎士比亚诗文集词频统计

存放的路径:

Spark综合小案例之莎士比亚诗文集词频统计

使用下面命令解压压缩包:

<code>unzip shakespear.zip</code>

提醒:如果报错=&gt; <code>-bash: unzip: command not found</code>

则需要安装一下zip和unzip后再解压:

<code>yum install -y unzip zip</code>

截图:

Spark综合小案例之莎士比亚诗文集词频统计

查看诗文集内容,注意到其实有一些行是空行来的:

Spark综合小案例之莎士比亚诗文集词频统计

停词表:

Spark综合小案例之莎士比亚诗文集词频统计

<code>spark-shell</code>

注意:代码中的<code>文件路径</code>和<code>运行模式</code>需要根据实际情况进行修改。

Spark综合小案例之莎士比亚诗文集词频统计

查看未排序前的结果:

<code>cat /tmp/v4output/*</code>

Spark综合小案例之莎士比亚诗文集词频统计
Spark综合小案例之莎士比亚诗文集词频统计

查看排序后的结果:

<code>cat /tmp/result/*</code>

Spark综合小案例之莎士比亚诗文集词频统计

发现均可查看到统计结果!

本教程较简单,关键有三个点:生成RDD的是多个文件、需要过滤掉一个文件里面的内容、需要对统计结果进行排序。其中会涉及到一些Scala常用方法,如trim、 replace、split等,如果有一定的编程基础,相信一看就能看得懂是什么意思。

此外还涉及到一点点的正则表达式,可以自行查阅资料学习,也可以参考本博客教程:JavaScript正则表达式轻松入门

更多学习资源请关注公众号、加微信、点赞加关注,感谢!

作者简介:邵奈一

全栈工程师、市场洞察者、专栏编辑

| 公众号 | 微信 | 微博 | CSDN | 简书 |

福利:

邵奈一的技术博客导航

邵奈一原创不易,如转载请标明出处,教育是一生的事业。

继续阅读