spark分析员工数据

本文通过Spark DataFrame API,分析员工数据,包括部门平均薪资、薪资高于部门平均的员工、非领导员工、特定领导的下属、同一职位员工、特定城市员工以及部门员工比例等操作。
摘要由CSDN通过智能技术生成

2.根据下面的数据,使用Spark进行分析
员工数据
empno,ename,job,mgr,hiredate,sal,comm,deptno
7369,SMITH,CLERK,7902,1980-12-17,800,NULL,20
7499,ALLEN,SALESMAN,7698,1981-2-20,1600,300,30
7521,WARD,SALESMAN,7698,1981-2-22,1250,500,30
7566,JONES,MANAGER,7839,1981-4-2,2975,NULL,20
7654,MARTIN,SALESMAN,7698,1981-9-28,1250,1400,30
7698,BLAKE,MANAGER,7839,1981-5-1,2850,NULL,30
7782,CLARK,MANAGER,7839,1981-6-9,2450,NULL,10
7788,SCOTT,ANALYST,7566,1987-7-13,3000,NULL,20
7839,KING,PRESIDENT,NULL,1981-11-17,5000,NULL,10
7844,TURNER,SALESMAN,7698,1981-9-8,1500,0,30
7876,ADAMS,CLERK,7788,87-7-13,1100,NULL,20
7900,JAMES,CLERK,7698,1981-12-3,950,NULL,30
7902,FORD,ANALYST,7566,1981-12-3,3000,NULL,20
7934,MILLER,CLERK,7782,1982-1-23,1300,NULL,10
说明:empno为员工编号,ename为员工姓名,job为职位,mgr为该员工的领导编号,hiredate为员工入职时间,sal为员工薪资,comm为员工奖金,deptno为员工所在部门编号
部门数据
deptno,dname,loc
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
说明:deptno为部门编号,dname为部门名称,loc为部门所在城市
(1)创建maven项目,将上述数据分别存储在本地文件系统的emp.txt和dept.txt两个文件中,使用Spark导入两个文件中的数据并创建两个名为empDF和deptDF的DataFrame
(2)使用DataFrame API,统计每个部门员工的平均薪资
(3)使用DataFrame API,查询各部门员工薪资大于本部门平均薪资员工信息,包括员工编号、员工姓名、入职时间和薪资
(4)使用DataFrame API,查询不是领导的员工信息,包括员工编号、员工姓名和入职时间
(5)使用DataFrame API,查询其领导是‘BLAKE’的员工信息,包括员工编号、员工姓名
(6)使用DataFrame API,查询和SMITH工作相同的员工信息
(7)使用DataFrame API,查询在CHICAGO工作的所有员工信息,包括员工编号、员工姓名、员工所在部门
(8)使用DataFrame API,查询10号部门的员工在整个公司中所占的比例,显示如25.23%
(8)使用DataFrame API,查询10号部门的员工在整个公司中所占的比例,显示如25.23%

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
/**

  • Created by hp on 2019/12/15.
    */
    object SparkDrfame {

def main(args: Array[String]) {
val spark=SparkSession.builder().appName(“fs”).master(“local[*]”).getOrCreate()
import spark.implicits._
val empDF=spark.read.format(“csv”).option(“sep”,",").option(“inferSchema”,“true”).option(“header”,“true”).load(“f:///data//emp.txt”)//.show()

val deptDF=spark.read.format("csv").option("sep",",").option("inferSchema","true").option("header","true").load("f:///data//dept.txt")

//1.求每个部门的平均工资
empDF.groupBy(“deptno”).mean(“sal”).show()//.join()
//2.使用dataframe,查询个部门员工薪资大于本本的平均薪资员工编号,姓名,入职时间,薪资

empDF.groupBy("deptno").mean("sal").join(empDF,"deptno").select("deptno","ename","hiredate","sal").where($"sal">$"avg(sal)").show()

//3.查询不是领导的员工信息,包括编号姓名,入职时间
println(“不是领导的员工”)
empDF.join(deptDF,“deptno”).select(“ename”,“hiredate”).where( " m g r " = =

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值