当前位置 : 主页 > 网络编程 > 其它编程 >

SparkRDD算子案例:两种方式计算学生总分

来源:互联网 收集:自由互联 发布时间:2023-07-02
文章目录一、提出任务二、准备工作一启动HDFS服务二启动Spark服务三、实现步骤一一启动HDFS服务 二启动Spark服务 三、实现步骤 一在Spark Shell里完成任务 二编写Scala程序完成任务 1、创建
文章目录一、提出任务二、准备工作一启动HDFS服务二启动Spark服务三、实现步骤一一启动HDFS服务
  • 二启动Spark服务
  • 三、实现步骤
    • 一在Spark Shell里完成任务
    • 二编写Scala程序完成任务
      • 1、创建Maven项目 - RDDDemo
      • 2、添加对hadoop、scala和spark的依赖
      • 3、给Maven项目配置Scala SDK
      • 4、创建CalculateSum单例对象
      • 5、运行程序查看结果
      • 6、安装配置scala-2.12.14
      • 7、更改项目使用的Scala SDK
      • 8、将项目打成jar包 - RDDDemo.jar
      • 9、将RDDDemo.jar包上传到虚拟机
      • 10、将jar包提交到Spark服务器运行
      • 11、在HDFS上查看程序运行结果
  • 一、提出任务

    • 针对成绩表计算每个学生总分

    姓名

    语文

    数学

    英语

    张钦林

    78

    90

    76

    陈燕文

    95

    88

    98

    卢志刚

    78

    80

    60

    二、准备工作

    一启动HDFS服务

    • 执行命令start-dfs.sh 在这里插入图片描述

    二启动Spark服务

    • 进入Spark的sbin目录执行命令./start-all.sh 在这里插入图片描述

    三、实现步骤

    一在Spark Shell里完成任务

    • 创建成绩列表scores基于成绩列表创建rdd1对rdd1按键归约得到rdd2然后查看rdd2内容 在这里插入图片描述

    二编写Scala程序完成任务

    1、创建Maven项目 - RDDDemo

    在这里插入图片描述

    • 设置GroupId与ArtifactId 在这里插入图片描述
    • 设置项目名称与项目保存位置 在这里插入图片描述
    • 单击【Finish】按钮 在这里插入图片描述

    2、添加对hadoop、scala和spark的依赖

    • 在pom.xml文件里添加对hadoop、scala和spark的依赖 在这里插入图片描述

      4.0.0

      net.hw.rddRDDDemo1.0-SNAPSHOTorg.apache.hadoophadoop-client2.7.1org.scala-langscala-library2.12.14org.apache.sparkspark-core_2.122.4.4

    3、给Maven项目配置Scala SDK

    • 我们已经安装了scala-sdk_2.13.8 在这里插入图片描述

    4、创建CalculateSum单例对象

    • 创建net.hw.rdd包在包里创建CalculateSum单例对象 在这里插入图片描述

      package net.hw.rdd

      import org.apache.spark.{SparkConf, SparkContext}

      /**

      • 功能计算学生总分
      • 作者华卫
      • 日期2022年03月13日 */ object CalculateSum { def main(args: Array[String]): Unit { // 创建Spark配置对象 val conf new SparkConf() conf.setAppName(“CalculateSum”) conf.setMaster(“spark://master:7077”) conf.set(“spark.testing.memory”, “2147480000”) // 基于配置创建Spark上下文 val sc new SparkContext(conf) // 创建成绩列表 val scores List((“张钦林”, 78), (“张钦林”, 90), (“张钦林”, 76), (“陈燕文”, 95), (“陈燕文”, 88), (“陈燕文”, 98), (“卢志刚”, 78), (“卢志刚”, 80), (“卢志刚”, 60)) // 基于成绩列表创建rdd1 val rdd1 sc.parallelize(scores) // 对rdd1按键归约得到rdd2统计学生总分 val rdd2 rdd1.reduceByKey((x, y) > x y) // 将rdd2内容保存到HDFS rdd2.saveAsTextFile(“hdfs://master:9000/park/result”) } }

    5、运行程序查看结果

    • 运行程序CalculateSum结果报错了 在这里插入图片描述
    • 出错的原因在于spark-2.4.4的内核是spark-core_2.12不支持我们安装的Scala版本scala-2.13.8
    • 下载https://downloads.lightbend.com/scala/2.12.14/scala-2.12.14.zip

    6、安装配置scala-2.12.14

    • 2.4.x的spark Longrightarrow 选择2.12.x的scala 在这里插入图片描述
    • 解压到指定位置比如C盘根目录 在这里插入图片描述
    • 修改Scala环境变量SCALA_HOME的值 在这里插入图片描述
    • 在命令行启动Scala查看其版本 在这里插入图片描述

    7、更改项目使用的Scala SDK

    • 打开项目结构窗口将项目使用的Scala SDK改成scala-sdk-2.12.14在这里插入图片描述

    8、将项目打成jar包 - RDDDemo.jar

    • 利用IDEA将项目RDDDemo打成jar包 在这里插入图片描述 在这里插入图片描述

    9、将RDDDemo.jar包上传到虚拟机

    • 将RDDDemo.jar包上传到master虚拟机 在这里插入图片描述 在这里插入图片描述

    10、将jar包提交到Spark服务器运行

    • 执行命令spark-submit --class net.hw.rdd.CalculateSum ./RDDDemo.jar 在这里插入图片描述

    11、在HDFS上查看程序运行结果

    • 利用Hadoop的WebUI查看/park/result目录 在这里插入图片描述
    • _SUCCESS表明程序运行成功
    • 有两个结果文件part-00000和part-00001
    • 执行命令hdfs dfs -getmerge /park/result /home/result.txt将两个结果文件合并下载到本地/home/result.txt 在这里插入图片描述
    • 查看本地结果文件/home/result.txt 在这里插入图片描述
    网友评论