栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Spark计算平均分

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark计算平均分

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
    • 一、提出任务
    • 二、完成任务
      • (一)新建Maven项目
      • (二)添加相关依赖和构建插件
      • (三)创建日志属性文件
      • (四)创建计算平均分单例对象
      • (五)本地运行程序,查看结果


一、提出任务

有多科成绩表,比如python.txt、spark.txt、django.txt,计算每个学生三科平均分

python成绩表 - python.txt

1 张三丰 82
2 李孟达 85
3 唐雨涵 78
4 王晓云 75
5 佟湘玉 74
6 杨文达 93
7 陈燕文 96
8 蔡桂英 88    

spark成绩表 - spark.txt

1 张三丰 83
2 李孟达 82
3 唐雨涵 74
4 王晓云 72
5 佟湘玉 75
6 杨文达 97
7 陈燕文 96
8 蔡桂英 84

django成绩表 - django.txt

1 张三丰 72
2 李孟达 65
3 唐雨涵 78
4 王晓云 65
5 佟湘玉 84
6 杨文达 73
7 陈燕文 66
8 蔡桂英 78

在集群上打开HDFS与Spark


在hdfs创建/score文件夹

在虚拟机上面创建三个成绩文件

上传三个成绩文件到/score目录,并检查三个成绩内容

二、完成任务 (一)新建Maven项目

设置项目信息(项目名、保存位置、组编号、项目编号)

  • 单击【Finish】按钮

  • 将java目录改成scala目录

(二)添加相关依赖和构建插件
  • 在pom.xml文件里添加依赖与Maven构建插件

(三)创建日志属性文件
  • 在资源文件夹里创建日志属性文件 - log4j.properties

(四)创建计算平均分单例对象

在net.lj.sql包里创建CalculateAverageBySQL单例对象

package net.lj.sql

import org.apache.spark.sql.{Dataset, SparkSession}

object CalculateAverageBySQL {
  //定义成绩样例类
  case class Score(name:String,score: Int)
  def main(args: Array[String]): Unit = {
    //创建或得到Spark会话对象
    val spark = SparkSession.builder()
      .appName("GradeTopNSQL")
      .master("local[*]")
      .getOrCreate()
    //读取HDFS上的成绩文件
    val lines:Dataset[String] = spark.read.textFile("hdfs://192.168.23.10:9000/score")
    //显示数据集内容
    lines.show()
    //导入隐式转换
    import spark.implicits._
    //定义成绩样例类

    //创建成绩数据集
    val gradeDS =lines.map(
      line => { val fields = line.split(" ")
        val name =fields(0)
        val score = fields(1).toInt
        Score(name,score)
      }
    )
    //显示
    //    gradeDS.show()
    //将数据集转换成数据帧
    val df = gradeDS.toDF()
    //显示数据帧的内容
    //    df.show()
    //基于数据帧创建临时表
    df.createOrReplaceTempView("t_grade")
    //查询临时表,得到分组排行榜
    val top3 = spark.sql(
      """
        |SELECT  name,score FROM
        | (SELECt name,score,row_number() OVER (PARTITION BY name ORDER BY score DESC) rank from t_grade) t
        | WHERe t.rank<=3
        |""".stripMargin
    )
    //
    top3.show()
  }

}

(五)本地运行程序,查看结果
  • 在控制台查看输出结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号