当前位置: 首页 > news >正文

Spark-小练试刀

任务1:HDFS上有三份文件,分别为student.txt(学生信息表)result_bigdata.txt(大数据基础成绩表), result_math.txt(数学成绩表)。

加载student.txt为名称为student的RDDx数据,result_bigdata.txt为名称为bigdata的RDD数据,result_math.txt 为名称为math的RDD数据。

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/root

hdfs dfs -put /data/result_math.txt /user/root/

hdfs dfs -put /data/result_bigdata.txt /user/root/

hdfs dfs -put /data/student.txt /user/root/

val student= sc.textFile("/user/root/student.txt")

val bigdata = sc.textFile("/user/root/result_bigdata.txt")

val math= sc.textFile("/user/root/result_math.txt")

任务2:根据任务1得到的RDD bigdatamath,取出成绩排名前5的学生成绩信息。

val bigdata_map=bigdata.map(x=>x.split("\t")).map(x=>(x(0),x(1),x(2).toInt))

val bigdata_sort=bigdata_map.sortBy(x=>x._3,false)

bigdata_sort.take(5)

val math_map=math.map(x=>x.split("\t")).map(x=>(x(0),x(1),x(2).toInt))

val math_sort=math_map.sortBy(x=>x._3,false)

math_sort.take(5)

任务3:

  1. 找出考试成绩得过100分的学生ID,最终的结果需要集合到一个RDD中。

val math_100= math.map(x=>x.split("\t")).map(x=>(x(0),x(2).toInt)).filter(x=>x._2==100)

math_100.collect

val bigdata_100= bigdata.map(x=>x.split("\t")).map(x=>(x(0),x(2).toInt)).filter(x=>x._2==100)

bigdata_100.collect

math_100.union(bigdata_100).distinct.collect()

2.找出两门成绩都得100分的学生ID,结果汇总为一个RDD。

math_100.intersection(bigdata_100).collect()

任务4:

  1. 输出每位学生的总成绩,要求将两个成绩表中学生ID相同的成绩相加。

val math_kv= math.map(x=>x.split("\t")).map(x=>(x(0),x(2).toInt))

val bigdata_kv=math.map(x=>x.split("\t")).map(x=>(x(0),x(2).toInt))

val scores_kv=bigdata_kv.union(math_kv)

scores_kv.collect()

val allscore=scores_kv.reduceByKey((x,y)=>x+y)

allscore.collect()

2.输出每位学生的平均成绩,要求将两个成绩表中学生ID相同的成绩相加并计算出平均分。

val scores_kv_count=scores_kv.mapValues(x=>(x,1))

scores_kv_count.collect()

Val avgscore_count= scores_kv_count.reduceByKey((x,y)=>(x._1+y._1,x._2+y._2))

avgscore_count.collect()

val avgscore=avgscore_count.mapValues(x=>x._1/x._2)

avgscore.collect()

3.合并每个学生的总成绩和平均成绩。

val Total_score=allscore.join(avgscore)

Total_score.collect()

任务5:汇总学生成绩并以文本格式存储在HDFS上,数据汇总为学生ID,姓名,总分,平均分。

val studentInfo = m_student.join(avgscore).join(allscore)

studentInfo.saveAsTextFile("/user/root/total score")

相关文章:

  • cdn服务器连接异常怎么办?cdn连接失败解决方法有哪些?
  • Python10天突击--编译过程通常涉及几个关键步骤
  • REST API、FastAPI与Flask API的对比分析
  • 日志之ClickHouse部署及替换ELK中的Elasticsearch
  • PV操作:宣帧闯江湖武林客栈版学习笔记【操作系统】
  • 网络安全零基础培训 L1-9 PHP连接MySQL数据库
  • 【C++】extern
  • Android Kotlin 项目完整集成 Bugly 异常监控指南
  • RISC-V GPU架构研究进展:在深度学习推理场景的可行性验证
  • 数字智慧方案6172丨智慧医院扩建信息化整体规划方案(60页PPT)(文末有下载方式)
  • Mysql常用函数解析
  • 五下单元习作:《智慧的力量》——读《草船借箭》有感
  • Java 期中考试试题考点剖析
  • CSS响应式与自适应设计
  • PMP-第三章 项目经理的角色
  • zephyr架构下扫描和解析Beacon数据
  • 安川机器人常见故障报警及解决办法
  • react有哪些生命周期
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的IP开发泡沫破局与价值重构研究
  • Spring 提供了多种依赖注入的方式
  • 2025财政观察①长三角罚没收入增速放缓,24城仍在上涨
  • 江西省公安厅警务保障部原主任辛卫平主动交代问题,正接受审查调查
  • 日本希望再次租借大熊猫,外交部:双方就相关合作保持密切沟通
  • 外交部官方公众号发布视频:不跪!
  • 总有黑眼圈是因为“虚”吗?怎么睡才能改善?
  • 专访|伊朗学者:美伊核谈不只是改革派立场,但伊朗不信任美国