如何用两种方式在SparkRDD中计算学生总分的长尾?

2026-04-02 12:111阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计929个文字,预计阅读时间需要4分钟。

如何用两种方式在SparkRDD中计算学生总分的长尾?

文章目录:

1.提出任务

2.准备工作

3.启动HDFS服务

4.启动Spark服务

5.实现步骤

- 启动HDFS服务 - 启动Spark服务 - 实现步骤 - 在Spark Shell中完成任务 - 编写Scala程序完成任务

6.创建任务

文章目录一、提出任务二、准备工作一启动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
    • 设置项目名称与项目保存位置
    • 单击按钮

    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

      如何用两种方式在SparkRDD中计算学生总分的长尾?

      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
    • 下载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

    本文共计929个文字,预计阅读时间需要4分钟。

    如何用两种方式在SparkRDD中计算学生总分的长尾?

    文章目录:

    1.提出任务

    2.准备工作

    3.启动HDFS服务

    4.启动Spark服务

    5.实现步骤

    - 启动HDFS服务 - 启动Spark服务 - 实现步骤 - 在Spark Shell中完成任务 - 编写Scala程序完成任务

    6.创建任务

    文章目录一、提出任务二、准备工作一启动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
    • 设置项目名称与项目保存位置
    • 单击按钮

    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

      如何用两种方式在SparkRDD中计算学生总分的长尾?

      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
    • 下载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