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)*


浙公网安备 33010602011771号