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