Apache spark spark流媒体中的广播

Apache spark spark流媒体中的广播,apache-spark,streaming,broadcast,Apache Spark,Streaming,Broadcast,如何在窗口上广播计算的数据流?例如,在最后10分钟,我发现满足条件的行子集(称之为send_events dstream)。我需要使用send_events数据流在过去10分钟内找到一组满足另一个条件的行(称之为ack_events_for_send_events dstream)。我不想使用groupbykey,因为需要进行大量的洗牌。当我使用groupbykey时,每个组的大小都非常小,最多10个。换句话说,我有很多团队(我不确定这是否有助于优化我的运营。只是想与大家分享。) 例如: id1

如何在窗口上广播计算的数据流?例如,在最后10分钟,我发现满足条件的行子集(称之为send_events dstream)。我需要使用send_events数据流在过去10分钟内找到一组满足另一个条件的行(称之为ack_events_for_send_events dstream)。我不想使用groupbykey,因为需要进行大量的洗牌。当我使用groupbykey时,每个组的大小都非常小,最多10个。换句话说,我有很多团队(我不确定这是否有助于优化我的运营。只是想与大家分享。)

例如:

id1, type1, time1
id1, type2, time3
id2, type1, time5
id1, type1, time2
id2, type2, time4
id1, type2, time6

我想找出每个id的type1和type2之间的最小时间差。每个id最多有10行,但在给定的窗口中我有10000个id

也许以下方法可行

yourDStream.foreachRDD(somefunc)
然后在somefunc中:

def somefunc(rdd):
    broadcastedList=sc.broadcast(rdd.collect())

也许下面的方法行得通

yourDStream.foreachRDD(somefunc)
然后在somefunc中:

def somefunc(rdd):
    broadcastedList=sc.broadcast(rdd.collect())

看看关于广播变量的文档,这很容易。不管怎样,根据你的描述,我不确定什么是解决你问题的正确方法。如果你想要一个更有效和具体的答案,请发布你已经拥有的代码。我实际上已经阅读了文档好几次了。在火花中,很容易理解。我可以收集RDD然后广播它,我的主要问题是广播一系列RDD的数据流。它应该很简单,但没有数据流的收集功能。有一个foreachRDD函数可能会有所帮助,但我不知道如何使用它来收集数据流中的所有数据。谢谢你的评论,顺便说一句。看看关于广播变量的文档,这很简单。不管怎样,根据你的描述,我不确定什么是解决你问题的正确方法。如果你想要一个更有效和具体的答案,请发布你已经拥有的代码。我实际上已经阅读了文档好几次了。在火花中,很容易理解。我可以收集RDD然后广播它,我的主要问题是广播一系列RDD的数据流。它应该很简单,但没有数据流的收集功能。有一个foreachRDD函数可能会有所帮助,但我不知道如何使用它来收集数据流中的所有数据。谢谢你的评论。