Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark数据帧中的解析方法_Apache Spark - Fatal编程技术网

Apache spark Spark数据帧中的解析方法

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| +------+--------+------+---------+

在这个问题中,我们有两个经理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-经理可以查看其团队的工作日


规则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,给我一些提示继续进行。