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 1.6 SQL或Dataframe或Windows_Apache Spark_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

Apache spark Spark 1.6 SQL或Dataframe或Windows

Apache spark Spark 1.6 SQL或Dataframe或Windows,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我的工单数据转储如下。我需要确定所有状态均为“进行中”和“完成”的订单 此外,仅当“正在进行”状态为“完成/无效”状态时,才需要显示。我在下面提到的输出。在Spark中,我可以遵循的最佳方法是什么。输入和输出附在这里 输入 Work_ Req_Id,Assigned to,Date,Status R1,John,3/4/15,In Progress R1,George,3/5/15,In Progress R2,Peter,3/6/15,In Progress R3,Alaxender,3/7/

我的工单数据转储如下。我需要确定所有状态均为“进行中”和“完成”的订单

此外,仅当“正在进行”状态为“完成/无效”状态时,才需要显示。我在下面提到的输出。在Spark中,我可以遵循的最佳方法是什么。输入和输出附在这里

输入

Work_ Req_Id,Assigned to,Date,Status
R1,John,3/4/15,In Progress
R1,George,3/5/15,In Progress
R2,Peter,3/6/15,In Progress
R3,Alaxender,3/7/15,Finished
R3,Alaxender,3/8/15,In Progress
R4,Patrick,3/9/15,Finished
R4,Patrick,3/10/15,Not Valid
R5,Peter,3/11/15,Finished
R6,,3/12/15,Not Valid
R7,George,3/13/15,Not Valid
R7,George,3/14/15,In Progress
R8,John,3/15/15,Finished
R8,John,3/16/15,Failed
R9,Alaxender,3/17/15,Finished
R9,John,3/18/15,Removed
R10,Patrick,3/19/15,In Progress
R10,Patrick,3/20/15,Finished
R10,Peter,3/21/15,Hold
Work_ Req_Id,Assigned to,Date,Status
R3,Alaxender,3/7/15,Finished
R3,Alaxender,3/8/15,In Progress
R7,George,3/13/15,Not Valid
R7,George,3/14/15,In Progress
R10,Patrick,3/19/15,In Progress
R10,Patrick,3/20/15,Finished
R10,Peter,3/21/15,Hold
输出

Work_ Req_Id,Assigned to,Date,Status
R1,John,3/4/15,In Progress
R1,George,3/5/15,In Progress
R2,Peter,3/6/15,In Progress
R3,Alaxender,3/7/15,Finished
R3,Alaxender,3/8/15,In Progress
R4,Patrick,3/9/15,Finished
R4,Patrick,3/10/15,Not Valid
R5,Peter,3/11/15,Finished
R6,,3/12/15,Not Valid
R7,George,3/13/15,Not Valid
R7,George,3/14/15,In Progress
R8,John,3/15/15,Finished
R8,John,3/16/15,Failed
R9,Alaxender,3/17/15,Finished
R9,John,3/18/15,Removed
R10,Patrick,3/19/15,In Progress
R10,Patrick,3/20/15,Finished
R10,Peter,3/21/15,Hold
Work_ Req_Id,Assigned to,Date,Status
R3,Alaxender,3/7/15,Finished
R3,Alaxender,3/8/15,In Progress
R7,George,3/13/15,Not Valid
R7,George,3/14/15,In Progress
R10,Patrick,3/19/15,In Progress
R10,Patrick,3/20/15,Finished
R10,Peter,3/21/15,Hold

您可以使用
groupBy
collect\u list
根据
Work\u Req\u Id
收集状态列表,并使用
UDF
筛选所需状态。然后将分组的数据帧与原始数据帧联接

鉴于Spark 1.6似乎不支持窗口操作中的
collect\u list/collect\u set
,因此此处不建议使用窗口函数

val df=Seq(
(“R1”、“John”、“3/4/15”、“进行中”),
(“R1”、“乔治”、“2015年3月5日”、“进行中”),
(“R2”、“Peter”、“3/6/15”、“进行中”),
(“R3”、“Alaxender”、“2015年7月3日”、“完工”),
(“R3”、“Alaxender”、“2015年3月8日”、“进行中”),
(“R4”、“帕特里克”、“2015年9月3日”、“完成”),
(“R4”、“Patrick”、“2015年10月3日”、“无效”),
(“R5”、“彼得”、“2015年11月3日”、“完成”),
(“R6”、“2015年12月3日”、“无效”),
(“R7”、“乔治”、“2015年3月13日”、“无效”),
(“R7”、“乔治”、“2015年3月14日”、“进行中”),
(“R8”,“约翰”,“2015年3月15日”,“完成”),
(“R8”、“约翰”、“2015年3月16日”、“失败”),
(“R9”、“Alaxender”、“2015年3月17日”、“完工”),
(“R9”、“约翰”、“2015年3月18日”、“删除”),
(“R10”、“Patrick”、“2015年3月19日”、“进行中”),
(“R10”、“帕特里克”、“2015年3月20日”、“完成”),
(“R10”,“帕特里克”,“3/21/15”,“暂停”)
).toDF(“工作请求Id”、“分配对象”、“日期”、“状态”)
def=udf(
(statuses:Seq[String])=>statuses.contains(“进行中”)&&
(statuses.contains(“完成”)| | statuses.contains(“无效”))
)
val df2=df.groupBy($“工作请求Id”).agg(收集列表($“状态”).as(“状态”))。
其中(需要($“状态”))。
删除($“状态”)
df.join(df2,序列(“工作请求Id”)).show
// +-----------+-----------+-------+-----------+
//|工作要求| Id |分配|日期|状态|
// +-----------+-----------+-------+-----------+
//| R3 | Alaxender | 3/7/15 |完工|
//| R3 | Alaxender | 3/8/15 |进行中|
//| R7 |乔治| 3/13/15 |无效|
//| R7 |乔治| 3/14/15 |进行中|
//| R10 | Patrick | 3/19/15 |进行中|
//| R10 |帕特里克| 3/20/15 |完成|
//| R10 |帕特里克| 3/21/15 |等待|
// +-----------+-----------+-------+-----------+