Apache spark Spark数据帧中的解析方法
在这个问题中,我们有两个经理M1和M2,在经理M1的团队中有两个员工e1和e2,在M2的团队中有两个员工e4和e5,下面是经理和员工的层次结构 1) M1 a. e1 b. e2 2) M2 a. e4 b. e5 我们有以下员工,工资数据框 +------+--------+------+---------+ |emp_id|month_id|salary|work_days| +------+--------+------+---------+ |e1 |1 |66000 |22 | |e1 |2 |48000 |16 | |e1 |3 |87000 |29 | |e2 |1 |75000 |25 | |e2 |4 |69000 |23 | |e2 |5 |66000 |22 | |e4 |1 |90000 |30 | |e4 |2 |87000 |29 | |e5 |3 |72000 |24 | |e5 |1 |57000 |19 | |e5 |4 |51000 |17 | |e5 |5 |69000 |23 | +------+--------+------+---------+ 使用以下规则查找新数据帧 规则1-经理可以查看其团队的工作日Apache spark Spark数据帧中的解析方法,apache-spark,Apache Spark,在这个问题中,我们有两个经理M1和M2,在经理M1的团队中有两个员工e1和e2,在M2的团队中有两个员工e4和e5,下面是经理和员工的层次结构 1) M1 a. e1 b. e2 2) M2 a. e4 b. e5 我们有以下员工,工资数据框 +------+--------+------+---------+ |emp_id|month_id|salary|work_days| +------+--------+------+---------+
规则2–员工可以查看自己的工作日和工资根据我从您的问题中了解的情况,以下是我建议您做的事情 首先,您需要创建经理的数据框架,其下的员工为 经理1
+---+------+
|sn |emp_id|
+---+------+
|a |e1 |
|b |e2 |
+---+------+
经理2
+---+------+
|sn |emp_id|
+---+------+
|a |e4 |
|b |e5 |
+---+------+
然后,您应该编写一个函数,该函数将返回经理下面的员工列表
import org.apache.spark.sql.functions._
def getEmployees(df : DataFrame): List[String] = {
df.select(collect_list("emp_id")).first().getAs[mutable.WrappedArray[String]](0).toList
}
最后一步是编写一个函数,只过滤作为
def getEmployeeDetails(df: DataFrame, list: List[String]) : DataFrame ={
df.filter(df("emp_id").isin(list: _*))
}
现在,如果您想看到manager1m1下的员工,那么
getEmployeeDetails(df, getEmployees(m1)).show(false)
我会还给你的
+------+--------+------+---------+
|emp_id|month_id|salary|work_days|
+------+--------+------+---------+
|e1 |1 |66000 |22 |
|e1 |2 |48000 |16 |
|e1 |3 |87000 |29 |
|e2 |1 |75000 |25 |
|e2 |4 |69000 |23 |
|e2 |5 |66000 |22 |
+------+--------+------+---------+
你也可以对其他经理这样做
你也可以为员工做同样的事情
getEmployeeDetails(df, List("e1")).show(false)
将返回employee1 e1的数据帧
+------+--------+------+---------+
|emp_id|month_id|salary|work_days|
+------+--------+------+---------+
|e1 |1 |66000 |22 |
|e1 |2 |48000 |16 |
|e1 |3 |87000 |29 |
+------+--------+------+---------+
我希望答案是有帮助的那么,你的问题是什么?那么,你尝试过什么而没有成功?嗨,@Juan find work\u每个经理团队的工作日都在使用上述方法Dataframe@Ram,给我一些提示继续进行。