5.RDD操作综合实例

一、词频统计

A.分步骤实现

1.准备文件

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

  1. 上传到hdfs上
hdfs dfs -put /usr/local/pythonspace/noval.txt /pythonspace/02/noval.txt

2.读文件创建RDD

>>> noval = sc.textFile("/pythonspace/02/noval.txt")
>>> noval.collect()

3.排除标点符号

>>> import re
>>> pattern = ",|\.|\'|\"|\/|\ "
>>> words = noval.flatMap(lambda line : re.split(pattern,line))
>>> words.collect()

4.分词

>>> words = words.flatMap(lambda word : word.split(" "))
>>> words.collect()

5.排除大小,排除停用词,排除长度小于2的词

排除大小写

>>> words = words.map(lambda word : word.lower())
>>> words.collect()

排除停用词

>>> with open('/usr/local/pythonspace/stopwords.txt') as f:
...     stop = f.read().split()
... 
>>> stop

>>> words = words.filter(lambda word : word not in stops)
>>> words.collect()

排除长度小于2的词

>>> words.filter(lambda word : len(word) > 2)
PythonRDD[17] at RDD at PythonRDD.scala:53
>>> words.collect()

6.统计词频

封装成元组

>>> wordmap = words.map(lambda word:(word,1))
>>> wordmap.collect()

开始统计

>>> wordcount  = wordmap.reduceByKey(lambda a,b:a + b)
>>> wordcount.collect()

7.按照词频进行排序

>>> wcSort=wordmap.sortBy(lambda wc:wc[1],False,1) 
>>> wcSort.collect()

8.输出到文件

>>> url = '/pythonspace/02/sortext'
>>> wcSort.saveAsTextFile(url)

9.查看结果

hdfs dfs -ls /pythonspace/02/sortext

hdfs dfs -cat /pythonspace/02/sortext/part-00000

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

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

1.首先第一点就是速度快,spark使用DAG 调度器、查询优化器和物理执行引擎,能够在批处理和流数据获得很高的性能。

2. 第二就是使用简单————Spark的易用性主要体现在两个方面。一方面,我们可以用较多的编程语言来写我们的应用程序

3.第三就是通用性高,我们可以很容易地在同一个应用中将一些常用的库结合起来使用,以满足我们的实际需求。

4.第四就是它可以在很多环境上都可以运行,它可以运行在Hadoop,Mesos,Kubernetes,standalone,或者云服务器上,并且它有多种多种访问源数据的方式。

二、求TOP值

预处理

数据按照逗号来进行分割

1.丢弃不合规范的行:

去除数据中的空行

流程:统计每一行数据的长度看是否等于4

去除数据中缺少数据项的行

流程:统计每一行中的长度不为0的数据,并将这些数据长度用一个列表记录下来,判断这个列表的长度是否等于4

补充知识点:快速生成指定规律的数据

print([i for i in range(1, 11)])
print([i*2 for i in range(1, 11)])
print([i*i for i in range(1, 11)])
print([str(i) for i in range(1, 11)])
print([i for i in range(1, 11) if i % 2 == 0])

2.按支付金额排序

流程:先将记录中第三个字段转化为int类型再进行排序

3. 取出排好序后的数据中的前三条数据

posted @ 2022-03-30 16:24  牛蛙点点  阅读(324)  评论(0编辑  收藏  举报