scala - 如何将多个主题的数据集中到一个地方进行处理?
问题描述
我有一个要求,我必须从 3 个 kafka 主题获取消息作为流数据,然后根据这 3 个主题数据之间的连接生成结果。请建议我使用 Direct Stream for Scala 的好方法。谢谢
解决方案
如果不同主题的数据相同,并且消费数据时处理逻辑相同,则可以从同一流中的不同主题消费并进行聚合。如果不同主题的处理逻辑不同,则指定concurrentThreads为4,然后在4个流之间进行聚合。您可以查看spark 结构化流式文档以从多个主题中消费。
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 --->
推荐阅读
- javascript - 盖子关闭的浏览器事件
- amazon-web-services - AWS 在另一个端口上托管新版本的 Web 应用程序?
- java - 由于空对象引用,应用程序崩溃
- ruby - 安装 HomeBrew 不适用于 Mojave
- database - Access 365:使用拆分表单更新表行
- oracle - Oracle apex 中是否有方法来验证用户注册的电子邮件
- r - R传单addPolygons - 如何孵化多边形?
- python - 如何快速将大型 CSV 文件读入 Python?
- mysql - SQL:每天选择客户未购买的商品
- redux - 创建小部件时 Flutter redux 调度事件