当前位置: 首页 > 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")

http://www.xdnf.cn/news/243109.html

相关文章:

  • centos7 离线安装python3 保留python2
  • 华为eNSP:多区域集成IS-IS
  • 数据升降级:医疗数据的“时空穿梭“系统工程(分析与架构篇)
  • Linux btop 使用教程
  • 三元运算符与扩展运算符
  • Java 中的 CopyOnWriteArrayList
  • 11.多边形的三角剖分 (Triangulation) : 画廊问题
  • Postgresql源码(145)优化器nestloop参数化路径评估不准问题分析
  • WSGI(Web Server Gateway Interface)服务器
  • Seata服务端同步提交事务核心源码解析
  • MySQL零基础入门:Ubuntu环境安装与操作精解
  • 深度探索DeepSeek:从架构设计到性能优化的实战指南
  • WPF嵌入webapi服务器,充当微服务角色
  • ActiveMQ 性能优化与网络配置实战(二)
  • 使用Python和Pandas实现的Snowflake权限检查与SQL生成用于IT审计
  • 利用无事务方式插入数据库解决并发插入问题
  • windows系统搭建自己的ftp服务器,保姆级教程(用户验证+无验证)
  • OkHttp3.X 工具类封装:链式调用,支持HTTPS、重试、文件上传【内含常用设计模式设计示例】
  • 深度学习基础--目标检测入门简介
  • PHP之CURL通过header传参数及接收
  • day12:遗传算法及常见优化算法分享
  • 指针与算法的双人舞:蓝桥杯两道趣味题的降维打击
  • Windows 查看电脑是否插拔过U盘
  • 【业务领域】电脑主板芯片电路结构
  • 【音视频】ffplay数据结构分析
  • C++中常用的十大排序方法之1——冒泡排序
  • 内存安全的攻防战:工具链与语言特性的协同突围
  • SIEMENS PLC程序代码 赋值 + 判断
  • 数值求解Eikonal方程的方法及开源实现
  • 25.4.30数据结构|并查集 路径压缩