05 RDD编程

一、词频统计

1.读文本文件生成RDD lines

 

2.将一行一行的文本分割成单词 words flatmap()

 

3.全部转换为小写 lower()

 

4.去掉长度小于3的单词 filter()

 

5.去掉停用词

 

6.转换成键值对 map()

7.统计词频 reduceByKey()

 

8.按字母顺序排序 sortBy(f)

 

9.按词频排序 sortByKey()

 

 10.结果文件保存 saveAsTextFile(out_url)

 

 11.词频结果可视化charts.WordCloud()   (调用render()没有反应)

 12.比较不同框架下(Python、MapReduce、Hive和Spark),实现词频统计思想与技术上的不同,各有什么优缺点.

 Python实现词频统计通过代码,就是自定义循环列表读取文件。

MapReduce通过提交任务的方法来完成。

Hive通过自己的HQL语言实现

Spark可以使用多种语言实现

综上,Map和Reduce两种操作,编写好的代码要打包运行,不能通过shell进行交互式处理,如果程序改动需要重新打成jar包。Hive的HQL表达能力有限迭代式算法无法表达,调优比较困难,可控性差。而Spark更快,容易使用,通用性高。

二、学生课程案例分析

1.总共有多少学生?map(), distinct(), count()

 

2.开设了多少门课程?

 

3.每个学生选修了多少门课?map(), countByKey()

 

4.每门课程有多少个学生选?map(), countByValue()

 

5.Henry选修了几门课?每门课多少分?filter(), map() RDD

 

6.Henry选修了几门课?每门课多少分?map(),lookup()  list

 

7.Henry的成绩按分数大小排序。filter(), map(), sortBy()

 

8.Henry的平均分。map(),lookup(),mean()

 

9.生成(课程,分数)RDD,观察keys(),values()

10.每个分数+5分。mapValues(func)

11.求每门课的选修人数及所有人的总分。combineByKey()

12.求每门课的选修人数及平均分,精确到2位小数。map(),round()

13.求每门课的选修人数及平均分。用reduceByKey()实现,并比较与combineByKey()的异同。

 14.结果可视化。charts,Bar()   course.keys()对上course.keys()是可以运行的,course.keys()对上course.values()或者course.map(lambda x:x[x]).collect()就会出现断言错误,*len(x_axis)=len(y_axis)*

原文地址:https://www.cnblogs.com/Margerita/p/14668155.html