Student计算
时间:2021-07-18
本文章向大家介绍Student计算,主要包括Student计算使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.shujia.spark.core import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Demo17Student { def main(args: Array[String]): Unit = { /** * 4、统计偏科最严重的前100名学生 * 1、计算每个学生分数的方差 * 2、对方差排序,取前100 * 3、整理数据 * */ val conf: SparkConf = new SparkConf() .setAppName("student") .setMaster("local") val sc = new SparkContext(conf) //读取分数表 val scoresRDD: RDD[String] = sc.textFile("data/score.txt") val courceRDD: RDD[String] = sc.textFile("data/cource.txt") //由于分数的范围不一样,所有需要做归一化 val scoreKVRDD: RDD[(String, String)] = scoresRDD.map(sco => { (sco.split(",")(1), sco) }) val couKVRDD: RDD[(String, String)] = courceRDD.map(cou => { (cou.split(",")(0), cou) }) //关联学生表和分数表 val joinRDD: RDD[(String, (String, String))] = scoreKVRDD.join(couKVRDD) val idAndScoreRDD: RDD[(String, Double)] = joinRDD.map { //如果参数用不到可以通过下划线代替 case (_: String, (sco: String, cou: String)) => val scosplit: Array[String] = sco.split(",") //学号 val id: String = scosplit(0) val score: Double = scosplit(2).toDouble val couSumSco: Double = cou.split(",")(2).toDouble //对分数进行归一化 (id, score / couSumSco) } //按照id进行分组 val groupByRDD: RDD[(String, Iterable[Double])] = idAndScoreRDD.groupByKey() //计算每个学生标准差 val stdRDD: RDD[(String, Double)] = groupByRDD.map { case (id: String, ss: Iterable[Double]) => /** * 计算学生分数标准差 */ val scolist: List[Double] = ss.toList //计算平均数 val avgSco: Double = scolist.sum / scolist.size //分数减去平均数再平方 val chaScore: List[Double] = scolist.map(i => (i - avgSco) * (i - avgSco)) //标准差的分子 val fz: Double = chaScore.sum //计算标准差 val std: Double = fz / scolist.size (id, std) } stdRDD.foreach(println) //降序排序取前100 val top10List: Array[(String, Double)] = stdRDD.sortBy(_._2,ascending = false).take(100) //偏科最严重学生的id val ids: Array[String] = top10List.map(_._1) //取出学生的分数 val top100Score: RDD[String] = scoresRDD.filter(score => { val id: String = score.split(",")(0) ids.contains(id) }) top100Score.foreach(println) } }
原文地址:https://www.cnblogs.com/lipinbigdata/p/15026085.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发实现的Intent跳转工具类实例
- Android开发中的文件操作工具类FileUtil完整实例
- Android开发中超好用的正则表达式工具类RegexUtil完整实例
- Android ijkplayer的使用方法解析
- Android开发实现查询远程服务器的工具类QueryUtils完整实例
- 解决android studio 3.0 加载项目过慢问题–maven仓库选择
- Android实现朋友圈点赞列表
- Kotlin基本类型自动装箱一点问题剖析
- Kotlin入门教程之开发环境搭建
- Android:Field can be converted to a local varible.的解决办法
- Android使用多线程进行网络聊天室通信
- android实现banner轮播图无限轮播效果
- Android CheckBox中设置padding无效解决办法
- Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法
- Android手势左右滑动效果