Apache spark spark streaming比较两个批处理和筛选数据

Apache spark spark streaming比较两个批处理和筛选数据,apache-spark,streaming,Apache Spark,Streaming,我想用spark流比较两批和过滤数据 每5秒一批 第一批: key type aaa 0 aaa 1 bbb 0 ccc 0 第二批: key type aaa 1 bbb 1 ddd 0 火花流处理第二批时,与第一批比较,然后过滤结果: key type ccc 0 两个相邻批次,上一批次的数据(类型为0)必须是上一批次的数据(类型为1),而当前批次的数据(类型为1),如下所示: key ty

我想用spark流比较两批和过滤数据

每5秒一批

第一批:

key     type
aaa     0
aaa     1
bbb     0
ccc     0
第二批:

key     type
aaa     1
bbb     1
ddd     0
火花流处理第二批时,与第一批比较,然后过滤结果:

key     type
ccc     0
两个相邻批次,上一批次的数据(类型为0)必须是上一批次的数据(类型为1),而当前批次的数据(类型为1),如下所示:

key     type
aaa     0
aaa     1
val preData = new java.util.ArrayList[String]
val currentData = new java.util.ArrayList[String]

def foreachRddFunc = (rdd:Rdd[String]) => {

rdd.collect().forecah(x => {
... ...
currentData.add(x)
... ...
})

//preData compare current data
... ... 

preData.addAll(currentData)

currentData.clear
}
第三批:

key     type
ddd     1
eee     0
筛选结果为空

如何使用Spark Streaming来实现这一点


谢谢

最后,我使用变量保存批次数据,如下所示:

key     type
aaa     0
aaa     1
val preData = new java.util.ArrayList[String]
val currentData = new java.util.ArrayList[String]

def foreachRddFunc = (rdd:Rdd[String]) => {

rdd.collect().forecah(x => {
... ...
currentData.add(x)
... ...
})

//preData compare current data
... ... 

preData.addAll(currentData)

currentData.clear
}

必须在驱动程序上执行此操作。

您可以粘贴代码段吗?抱歉,没有代码段。我认为spark streaming windows功能可以完成此操作。我现在正在尝试。是的,您可以使用spark streaming功能完成此操作。我以为您已经完成了此操作,并且面临任何问题