6. RDD综合练习:更丰富的操作
一、集合运算练习
union(), intersection(),subtract(), cartesian()

二、键值对RDD的内连接与外连接
join(), leftOuterJoin(), rightOuterJoin(), fullOuterJoin()

三、学生课程分数
1. 持久化 scm.cache()

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

3. 开设了多少门课程?

4. 生成(姓名,课程分数)键值对RDD,观察keys(),values()

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

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

7. 有多少个100分?

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

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

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

11. Tom的平均分。map(),lookup(),mean()

12. 生成(姓名课程,分数)RDD,观察keys(),values()

13. 每个分数+20平时分【mapValues(func)】

14. 每个分数+20平时分【map(func)】

15. 查看不及格人数的变化

16. 求每门课的选修人数及平均分 【lookup(),np.mean()实现】

17. 【reduceByKey()和collectAsMap()实现】

18. 【combineByKey(),map(),round()实现,确到2位小数】

19. 比较几种方法的异同
前两种方法都需要多个函数运行才可以得出平均数,并且如果要得出所有科目的平均分需要进行循环运算。第三种方法只需要一个函数就可以得出每门科目的学习人数和总分,更适用于数据量多时使用。第一种与其他两种不同的是可以直接使用numpy.mean()函数算出平均数。

浙公网安备 33010602011771号