【发布时间】:2019-09-19 14:57:42
【问题描述】:
我有一个 Spark 结构化流应用程序 (v2.3.2),它需要从多个 Kafka 主题中读取数据,进行一些相对简单的处理(主要是聚合和一些连接)并将结果发布到其他一些 Kafka 主题.所以多个流在同一个应用程序中处理。
我想知道如果我只设置 1 个订阅多个主题的直接 readStream 然后使用选择拆分流,从资源的角度(内存、执行程序、线程、Kafka 侦听器等)是否会有所不同,与每个主题 1 个 readStream 相比。
类似
df = spark.readStream.format("kafka").option("subscribe", "t1,t2,t3")
...
t1df = df.select(...).where("topic = 't1'")...
t2df = df.select(...).where("topic = 't2'")...
对比
t1df = spark.readStream.format("kafka").option("subscribe", "t1")
t2df = spark.readStream.format("kafka").option("subscribe", "t2")
其中一个比另一个更“有效”吗?我找不到任何关于这是否有影响的文档。
谢谢!
【问题讨论】:
标签: apache-spark apache-kafka spark-structured-streaming