没有合适的资源?快使用搜索试试~ 我知道了~
SparkCore&SparkSQL练习.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 58 浏览量
2023-10-03
20:00:41
上传
评论
收藏 44KB DOCX 举报
温馨提示
试读
12页
SparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docxSparkCore&SparkSQL练习.docx
资源推荐
资源详情
资源评论
1. SparkCore 练习
1.1 pyspark 交互式编程
如下 chapter2-data1.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
Tom,DataBase,80
Tom,Algorithm,50
Tom,DataStructure,60
Jim,DataBase,90
Jim,Algorithm,60
Jim,DataStructure,80
……
请根据给定的实验数据,在 pyspark 中通过编程来计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom 同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系 DataBase 课程共有多少人选修;
(6)各门课程的平均分是多少;
(7)使用累加器计算共有多少人选了 DataBase 这门课。
1.2 编写独立应用程序实现数据去重
对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其
中重复的内容,得到一个新文件 C。下面是输入文件和输出文件的一个样例,供参考。
输入文件 A 的样例如下:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 z
输入文件 B 的样例如下:
20170101 y
20170102 y
20170103 x
20170104 z
20170105 y
根据输入的文件 A 和 B 合并得到的输出文件 C 的样例如下:
20170101 x
20170101 y
20170102 y
20170103 x
20170104 y
20170104 z
20170105 y
20170105 z
20170106 z
1.3 编写独立应用程序实现求平均值问题
每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生
名字,第二个是学生的成绩;编写 Spark 独立应用程序求出所有学生的平均成绩,并输出到
一个新文件中。下面是输入文件和输出文件的一个样例,供参考。
Algorithm 成绩:
小明 92
小红 87
小新 82
小丽 90
Database 成绩:
小明 95
小红 81
小新 89
小丽 85
Python 成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)
2. SparkCore 答案
2.1 pyspark 交互式编程
下载 chapter4-data1.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
Tom,DataBase,80
Tom,Algorithm,50
Tom,DataStructure,60
Jim,DataBase,90
Jim,Algorithm,60
Jim,DataStructure,80
……
请根据给定的实验数据,在 pyspark 中通过编程来计算以下内容:
【参考答案】
(1) 该系总共有多少学生;
>>> lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
>>> res = lines.map(lambda x:x.split(",")).map(lambda x: x[0]) //获取每行数据的第 1 列
>>> distinct_res = res.distinct() //去重操作
>>> distinct_res.count()//取元素总个数
//265
答案为:265 人
(2) 该系共开设了多少门课程;
>>> lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
>>> res = lines.map(lambda x:x.split(",")).map(lambda x:x[1]) //获取每行数据的第 2 列
>>> distinct_res = res.distinct()//去重操作
>>> distinct_res.count()//取元素总个数
//8
答案为 8 门
(3) Tom 同学的总成绩平均分是多少;
>>> lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
>>> res = lines.map(lambda x:x.split(",")).filter(lambda x:x[0]=="Tom") //筛选 Tom 同学的成绩
信息
>>> res.foreach(print)
>>> score = res.map(lambda x:int(x[2])) //提取 Tom 同学的每门成绩,并转换为 int 类型
>>> num = res.count() //Tom 同学选课门数
>>> sum_score = score.reduce(lambda x,y:x+y) //Tom 同学的总成绩
>>> avg = sum_score/num // 总成绩/门数=平均分
>>> print(avg)
//30.8
Tom 同学的平均分为 30.8 分
(4) 求每名同学的选修的课程门数;
>>> lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
>>> res = lines.map(lambda x:x.split(",")).map(lambda x:(x[0],1)) //学生每门课程都对应(学生
姓名,1),学生有 n 门课程则有 n 个(学生姓名,1)
>>> each_res = res.reduceByKey(lambda x,y: x+y) //按学生姓名获取每个学生的选课总数
>>> each_res.foreach(print)
答案共 265 行
('Lewis', 4)
('Mike', 3)
('Walter', 4)
('Conrad', 2)
('Borg', 4)
……
(5) 该系 DataBase 课程共有多少人选修;
剩余11页未读,继续阅读
资源评论
AI_Maynor
- 粉丝: 7w+
- 资源: 153
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功