使用多个读流从多个Kafka主题激发结构化流式阅读

wsxa1bj1  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(340)

考虑到两个主题的数据在一个点上连接起来,最后发送到kafka sink,这是读取多个主题的最佳方式

val df = spark
  .readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", servers)
  .option("subscribe", "t1,t2")

val df1 = spark
  .readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", servers)
  .option("subscribe", "t1")

val df2 = spark
  .readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", servers)
  .option("subscribe", "t2")

我会去的地方 df1.join(df2) 把它送到Kafka的Flume里。
在性能和资源使用方面,哪一个是更好的选择?
提前谢谢
ps:我看到另一个类似的问题spark structured streaming app从多个kafka主题中阅读,但是两个主题的Dataframe似乎没有一起使用

y3bcpkx1

y3bcpkx11#

在第一种方法中,您必须在某个点添加一个过滤器,然后继续join。除非您还希望同时处理这两个流,否则第二种方法的性能更好,更易于维护。
我想说的是,方法2是一个简单的方法,跳过了过滤阶段,因此效率更高一些。它还提供了自主权,在这两个流从下面的Angular 来看,例如:一个主题是转移到一个新的Kafka集群。您也不必考虑两个主题之间的不均匀性,例如:分区数。这使作业调整更容易。

相关问题