江湖神经

导航

5.RDD操作综合实例

一、词频统计

A.分步骤实现

1.准备文件

          1.下载小说或长篇新闻稿

          2.上传到hdfs

启动hdfs

上传文件并查看

2.读文件创建RDD

创建SparkContext以及从文件系统中加载数据创建RDD

与原txt文件对比

3.分词

 

 

4.标点符号re.split(pattern,str),flatMap(),

先导入re

用re.split分词(\W+会匹配所有非单词字符,(\W+)会返回这些,但我们不需要返回,所以这里用\W+即可)

再分词一遍清除去标点后产生的新的无用数据

排除大小写lower(),map()

停用词,可网盘下载stopwords.txt,filter(),

将停用词文件分词储存到变量中

筛选出不在停用表中的词

筛选前后对比

长度小于2的词filter()

 

 

筛选前后对比

5.统计词频

先把单词映射成键值对

 

 

将key相同的values合并起来,做词频的统计

6.按词频排序

 

 

7.输出到文件

输出到本地文件上

输出到分布式文件上

 

8.查看结果

 

 

 

B.一句话实现:文件入文件出

 

 

查看结果

 

 

 

 

 

C.和作业2的“二、Python编程练习:英文文本的词频统计 ”进行比较,理解并用自己的话说明Spark编程的特点。

点击查看代码 在pyspark中读取数据后,经过转换的操作形成RDD对象,进行英文文本的词频统计中,需要用到flatMap进行切分并压平,接着处理切分后的字符串形成新的键值对,在对键值对进行词频统计,接着排序输出;pyspark中有分区块数的概念,是多个任务同时进行。
在python中读取文件后,没有用到flatMap操作,也没有分区块操作,python是按顺序进行各种操作。
所以,pyspark主要是对分布式的数据进行处理,而python是对单数据进行处理。 

 

 

二、求Top值

 

网盘下载payment.txt文件,通过RDD操作实现选出最大支付额的用户。

1.丢弃不合规范的行:

下载项目,将项目put到分布式系统上

拆分字段

丢弃空行与字段不完整的行

丢弃有空值的行

有效的记录

 

 

2.支付金额转换为数值型,按支付金额排序

 

 

3.取出Top3

 

 

 

 

 

posted on 2022-03-29 10:09  江湖神经  阅读(133)  评论(0)    收藏  举报