У меня есть приложение структурированного потокового вещания Spark (v2.3.2), которое нуждается в чтении из ряда тем Kafka, делает некоторую относительно простую обработку (в основном агрегации и несколько объединений) и публикует результаты в ряде других тем Kafka,Таким образом, несколько потоков обрабатываются в одном приложении.
Мне было интересно, имеет ли это значение с точки зрения ресурсов (память, исполнители, потоки, слушатели Кафки и т. Д.), Если я установил только 1 прямой readStreamкоторый подписывается на несколько тем, а затем разделяет потоки с помощью выбора, вместо 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")
Является ли один из них "более эффективным", чем другой?Я не смог найти документацию о том, имеет ли это значение.
Спасибо!