【发布时间】:2022-06-15 01:54:42
【问题描述】:
我是 scala 语言的新手。
我有两个 scala 列表 emp(empid,deptid,empname,salary) 和 dept(deptname,deptid)。我想找出每个部门的前 3 名薪水。
val emp =
List(
(1,"10","Smith",3000),
(1,"10","Smith",3000),
(3,"10","Williams",1000),
(4,"10","Jones",2000),
(5,"10","Brown",5000),
(6,"20","Brown",8000),
(7,"10","Jones",11000),
(8,"20","Brown",5000),
(9,"20","Brown",8000)
)
val dept =
List(
("Finance","10"),
("Marketing","20")
)
输出应包含财务部门的前 3 名薪水和营销部门的前 3 名薪水。在不使用 spark 函数的情况下帮助我解决这个问题。
【问题讨论】:
-
到目前为止你有什么尝试?
-
所以,我会帮助你解决算法,但你必须弄清楚代码。在
emp列表中使用groupMap得到一个部门的所有薪水,然后在结果上使用.view.mapValues对列表进行排序,然后尝试取前三个元素。最后,将dept列表转换为地图,并使用它对上一个结果进行最终的map,以从代码中获取部门名称。
标签: scala