Spark Structured Streaming чтение из нескольких тем Kafka с несколькими потоками чтения - PullRequest
0 голосов
/ 13 апреля 2020

Учитывая, что данные из обеих тем объединены в один момент и, наконец, отправлены в приемник Kafka, что является наилучшим способом чтения из нескольких тем

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) и отправлю его в раковину Кафки.

Что касается производительности и использования ресурсов, какой вариант будет лучшим здесь?

Заранее спасибо

PS : Я вижу другой похожий вопрос Spark структурированное потоковое приложение, читающее из нескольких тем Kafka но там кадры данных из 2 тем, похоже, не используются вместе

1 Ответ

1 голос
/ 13 апреля 2020

При первом подходе вам нужно будет добавить фильтр в какой-то момент, а затем продолжить соединение. Если только вы не захотите обрабатывать оба потока вместе, второй подход является более быстрым и простым в поддержке tidbit.

Я бы сказал, что подход 2 прост и пропускает этап фильтрации, следовательно, немного больше эффективный. Кроме того, он предлагает автономность в обоих потоках с точки зрения инфраструктуры, например: один из топи c должен был перейти на новый кластер kafka. Вам также не нужно учитывать неравномерность между двумя темами, например: количество разделов. Это облегчает настройку работы.

...