其他分享
首页 > 其他分享> > 5.RDD操作综合实例

5.RDD操作综合实例

作者:互联网

一、词频统计

A. 分步骤实现 

1、准备文件

下载小说或长篇新闻稿

上传到hdfs上

start-all.sh
hdfs dfs -put 666.txt
hdfs dfs -ls

2、读文件创建RDD

>>> lines = sc.textFile("/home/hadoop/666.txt")
>>> lines.foreach(print)

3、分词

>>> words =lines.flatMap(lambda line :line.split())                            
>>> words.collect()

4、排除大小写lower()map()

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

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

>>> import re
>>> words3 = words2.flatMap(lambda line:re.split('\W+',line))
>>> words3.collect()

 

停用词,stopwords.txt,filter()

hdfs dfs -put /home/hadoop/virtual_share/stopwords.txt
hdfs dfs -ls

>>> words4 = words3.flatMap(lambda a:a.split())
>>> words4.collect()

>>> stopwords = sc.textFile("file:///home/hadoop/stopwords.txt").flatMap(lambda a:a.split()).collect()
>>> stopwords

>>> words5 = words4.filter(lambda a:a not in stopwords)
>>> words5.collect()

长度小于2的词filter()

>>> words6 = words5.filter(lambda a:len(a)>2)
>>> words6.collect()

 

5、统计词频

>>> words7 = words6.map(lambda a:(a,1))
>>> words7.collect()

 

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

6、按词频排序

>>> words8 = words7.sortBy(lambda x:x[1], False)
>>> words8.collect()

 

7、输出到文件

>>> words8.savaAsTextFile('ad_RDD')
>>> words8.saveAsTextFile('file:///home/hadoop/ad_RDD')

8、查看结果

cd ad_RDD/
cat part-00000 | head -5

 

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

 

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

Spark的特性主要有以下四点:

快速

易用

通用

易融合性

二、求Top值

上传文件到hdfs

 

1、丢弃不合规范的行:

分词

处理空行、少数据项

处理缺失数据

>>> import re
>>> account = sc.textFile('payment.txt').flatMap(lambda a:re.split('\W+',a)).flatMap(lambda a:a.split())
>>> account.collect()

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

>>> account1 = account.map(lambda a:(a,int(a)))
>>> account1.collect()

3、取出Top3

>>> account1.saveAsTextFile('top')

标签:hdfs,flatMap,collect,RDD,实例,split,操作,Spark,lambda
来源: https://www.cnblogs.com/n1254088/p/16115063.html