我有来自各种来源的数据流。在每个来源中,有许多可用的传感器。下面给出的简化输入DStream数据格式,
A | SType1 |上
A | SType2 |关
A | SType1 |上
B | SType3 |关
B | SType2 |关
B | SType1 |上
请注意,数据在实际场景中还有其他列,后来的处理使用了所有这些列
截至目前,所有DStream窗口操作都在进行此操作而没有任何问题。但我想分别对每个“Source
”进行DStream操作。意思是,在源A上,我想做一组操作。同样的设置将在源B和其他来源中重复,如下所示..(不确定我是否正确传达了这一点。)
- foreachSource
- 在每个窗口上
--foreachRDD
- 做手术
我的操作是自定义要求..我想在特定来源下找到“
whether any Sensor+value subsequence exists
” 对于Eg ..在上面的例子..我的参考子序列= Stype1 + On& Stype2 + Off ,这就存在了 仅限来源
"A"
为了进行子序列查找操作,我编写了一个函数 在foreachRDD下,它工作正常。但是遍历每个来源 在那个功能里面可能效率不高
理想情况下,我认为foreachSource(func)应根据每个来源给出不同的Dstream。这样我就可以在每个源的“func
”中使用所有可用的DStream API(窗口等...)。
我的一些研究如下。
我使用Group by
/ join
等尝试了一些方法,但没有成功。
下面的链接显示了如何维护各种Stream输入之间的会话 - 认为这可以调整
PySpark - Combining Session Data without Explicit Session Key / Iterating over All Rows
无论如何要实现这个目标吗?..
我选择的语言是python ......