繁体   English   中英

如何在Spark Streaming中加入两个Dstream

[英]How to join two Dstream in spark streaming

有一个系统同时为两个kafka主题生成数据。

例如:
步骤1:系统创建一个数据,例如(id=1, main=A, detail=a, ...)

步骤2:将数据分为两部分,例如(id=1, main=A ...)(id=1, detail=a, ...)

第3步:一个将发送给TOPIC1和其他将发送到TOPIC2

所以我想使用火花流合并两个主题的数据:

data_main = KafkaUtils.createStream(ssc, zkQuorum='', groupId='', topics='topic1')
data_detail = KafkaUtils.createStream(ssc, zkQuorum='', groupId='', topics='topic2')

result = data_main.transformWith(lambda x, y: x.join(y), data_detail)
# outout:
# (id=1, main=A, detail=a, ...)

但是考虑一下这种情况:

(id=1, main=A ...)可能在data_main的batch1中,而(id=1, detail=a, ...)可能在data_detail 它们非常接近,但不在同一批次时间内。

如何处理此案? 非常感谢您的任何建议

您尝试过开窗吗? 因为开窗也将有助于回顾和查看其他批次间隔中的数据。

窗口化允许您在数据的滑动窗口上应用转换。

每次窗口在源DStream上滑动时,落入窗口中的源RDD就会合并并对其进行操作以生成窗口DStream的RDD。 所以基本上您可以合并多个批次间隔中的数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM