我有一个要求,我必须从3个kafka主题获取消息作为流数据,然后根据这3个主题数据之间的Join生成结果。请建议我使用Direct Stream for Scala的好方法。 谢谢
答案 0 :(得分:1)
如果不同主题中的数据相同,并且在使用数据时您具有相同的处理逻辑,则可以从同一流中的不同主题进行消费并进行汇总。如果不同主题的处理逻辑不同,则将并发线程指定为4,然后在4个流之间进行聚合。您可以查看spark structured streaming文档以了解来自多个主题的使用情况。
val df = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1,host2:port2")
.option("subscribe", "topic1,topic2")
.load()
df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
.as[(String, String)]
<--- your aggregation logic here --->