Spark2.4.8 求员工工资总额

  • 一、测试数据
  • 二、任务要求
  • 三、编码实现
  • 四、实验要求

一、测试数据


  • 员工信息表:下载地址
  • 表字段说明:

二、任务要求


  • 任务1:求每个部门的员工工资总额
  • 任务2:求每个部门员工工资与奖金总额
  • 任务3:将任务2中的结果按照部门号进行升序排
  • 任务4:将任务2中的结果按照工资总额进行降序排

三、编码实现


  • 创建maven工程

  • 添加spark相关依赖,在pom.xml中添加如下依赖

    <packaging>jar</packaging><properties><scala.version>2.11.8</scala.version><spark.version>2.4.8</spark.version><spark.artifact.version>2.12</spark.artifact.version><hadoop.version>2.7.3</hadoop.version>
    </properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${spark.artifact.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><!-- 使用scala2.11.8进行编译和打包 --><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency>
    </dependencies><build><!-- 指定scala源代码所在的目录 --><sourceDirectory>src/main/scala</sourceDirectory><testSourceDirectory>src/test/scala</testSourceDirectory><plugins><!--对src/main/java下的后缀名为.java的文件进行编译 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin><!-- scala的打包插件 --><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>4.5.4</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions><configuration><scalaVersion>${scala.version}</scalaVersion></configuration></plugin></plugins>
    </build>
    
  • 【任务一】代码实现如下:

    • 实现代码:

      import org.apache.spark.{SparkConf, SparkContext}object CountSalary {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setAppName(CountSalary.getClass.getName).setMaster("local[2]")val sc = new SparkContext(sparkConf)sc.textFile("d:/Tools/emp.csv").map(line => {val strings = line.split(",")val salary = strings(5).toIntval deptNo = strings(7).toInt(deptNo,salary)}).reduceByKey(_+_).collect().foreach(println)// 关闭scsc.stop()}
      }
      
    • 结果:
  • 【任务二】代码实现如下:

    • 实现代码:

      import org.apache.spark.{SparkConf, SparkContext}object CountBonusAndSalary {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setAppName(CountBonusAndSalary.getClass.getName).setMaster("local[2]")val sc = new SparkContext(sparkConf)sc.textFile("d:/Tools/emp.csv").map(line => {val strings = line.split(",")val salary = strings(5).toIntval deptNo = strings(7).toIntvar bonus = 0if (!"".equals(strings(6)) && null != strings(6)){bonus = strings(6).toInt}(deptNo,salary+bonus)}).reduceByKey(_+_).collect().foreach(println)// 关闭scsc.stop()}
      }
      
    • 结果如下:
  • 【任务三】代码实现如下:

    • 代码实现

      import org.apache.spark.{SparkConf, SparkContext}object CountBonusAndSalaryByAsc {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setAppName(CountBonusAndSalaryByAsc.getClass.getName).setMaster("local[2]")val sc = new SparkContext(sparkConf)sc.textFile("d:/Tools/emp.csv").map(line => {val strings = line.split(",")val salary = strings(5).toIntval deptNo = strings(7).toIntvar bonus = 0if (!"".equals(strings(6)) && null != strings(6)){bonus = strings(6).toInt}(deptNo,salary+bonus)}).reduceByKey(_+_).sortByKey(true).collect().foreach(println)// 关闭scsc.stop()}
      }
    • 结果如下
  • 【任务四】代码实现如下:

    • 代码实现:

      import org.apache.spark.{SparkConf, SparkContext}object CountTotalByAsc {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setAppName(CountTotalByAsc.getClass.getName).setMaster("local[2]")val sc = new SparkContext(sparkConf)sc.textFile("d:/Tools/emp.csv").map(line => {val strings = line.split(",")val salary = strings(5).toIntval deptNo = strings(7).toIntvar bonus = 0if (!"".equals(strings(6)) && null != strings(6)){bonus = strings(6).toInt}(deptNo,salary+bonus)}).reduceByKey(_+_).sortBy(tuple2 => {tuple2._2},false).collect().foreach(println)// 关闭scsc.stop()}
      }
    • 结果如下:

四、实验要求


  • 请使用不同的算子来完成如上的任务

Spark2.4.8 求员工工资总额相关推荐

  1. 「Python语法结构」求员工的实际工资

    求员工的实际工资 功能要求 某公司员工的工资由基本工资.物价津贴及房租津贴组成.其中物价津贴占基本工资的40%,房租津贴占基本工资的20%.编写一个程序从键盘上输入员工的基本工资,并根据输入的基本工资 ...

  2. MapReducer——使用序列化求部门工资总额(4)

    举例2:使用MapReduce序列化重写"求部门工资的总额的例子 数据处理过程如图: 代码实现: EmpMapper.java package com.serializable.salary ...

  3. 数据库-5 求员工连续工作天数

    之前遇到的一个需求,求公司员工连续工作天数. 大概的数据格式: 员工工号     日期      当天打卡时长 12345    20171201         8 12345    2017120 ...

  4. 第七周项目30-分文件用数组求员工工资

    /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年4月19日 *版本号: ...

  5. 第七周项目29-数组求员工工资

    /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:text.cpp *作者:李德彪 *完成日期:2015年4月19日 *版本号: ...

  6. c语言求员工的平均分数,用C语言编程平均分数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 当个反面典型,让大家见识下丑陋无比的程序好了,主要是想练练打字,HOHO.应该用二维数组且全部函数化的,rand的%后面或是101或是100,可能和编译器 ...

  7. JAVA求员工工资_员工工资问题(java)

    import java.util.Scanner; public class Lq3 {  public static void main(String args[])  {   double a,b ...

  8. 数据结构与算法:求员工工资问题

    问题是:若一个人第一个月的工资是1500,以后每一年的工资都在原基础上增加10%,那么第n年他的工资是多少?分别用递归和递推的方法编写算法. 这个问题没啥好说的了,直接代码见吧(此外,递推相当于迭代) ...

  9. mysql员工表部门表_部门表 department 部门编号 dept_id 部门名称 汇总表

    有两张表 部门表  department  部门编号 dept_id 部门名称 dept_mement create table department( dept_id tinyint auto_in ...

最新文章

  1. java人工洗牌窗口程序_求解,用JAVA写洗牌与发牌模拟程序
  2. VS2005编译QT4.8.2
  3. linux内核支持硬盘,Intel 10nm桌面版还是来了:Linux内核已支持
  4. 线程池用过吗?ThreadPoolExecutor谈谈你的理解? —— 为什么用线程池?优势?|| 线程池如何使用?
  5. 文本分类入门(三)统计学习方法
  6. error C3872: '0x3000': this character is not allowed in an identifier 解决方法
  7. 被“轻视”的CV·AR的背后核心技术
  8. 栈溢出笔记1.3 准备Shellcode
  9. asp.net 获取访问的url
  10. java怎么录入4位会员号_【Java】录入会员号会员生日会员积分等会员信息,并判断录入的会员号是否合法,具体如下图...
  11. python的内存模型
  12. OO思想(只留做自己看理解)
  13. 推荐8个实用精美的在线网站,珍藏多年!
  14. Unity使用Aspose.Words创建表格和UI截图一起插入到Word中并保存到本地的一种解决方案
  15. xstream 对象 -》xml
  16. 程序员裸辞全职接单一个月的感触
  17. Pycharm新手使用教程(详解)
  18. [html5]离线存储
  19. Cell Metabolism:碳水化合物限制饮食对人类肝脂肪变性的快速代谢益处的综合理解
  20. qcc304x笔记之提示音配置(六)

热门文章

  1. java 编码 正弦计算器_计算器完整代码(java).doc
  2. 如果汉朝有RPA,那么李陵就能枭首10万匈奴,大汉版图扩至地中海
  3. SegmentFault 助力梅赛德斯-奔驰科技马拉松丨带你提前感受数字化时代的购车体验...
  4. QS公布2023年全球MBA商科硕士排名,清华大学MBA领跑中国MBA项目 | 美通社头条
  5. 用c语言设计八路抢答器的犯规程序,八路抢答器电子线路设计(附C语言程序) - 图文...
  6. CNN卷积神经网络的改进(15年最新paper)
  7. 8. amp;和amp;amp;的区别?
  8. IPFS技术的严谨性介绍
  9. Ubuntu修改grub进入Memtest86内存测试模式的退出解决方法
  10. you-get下载腾讯视频相关