我使用Kafka的CreateDirectStream从我的Spark Streaming应用程序创建使用者。 当我加载消费者应用程序的单个实例时,它运行良好,但是当我与相同消费者组启动第二个应用程序时,其中一个实例会在几秒钟内发生异常:{{1} }
我的消费者代码相当简单:
...IllegalStateException: No current assignment for partition testTpc1-1
我也将val stream = KafkaUtils.CreateDirectStream[String,String](
ssc,
PreferConsistent,
Subscribe[String,String](topics,kafkaParams)
)
设置为enable.auto.commit
如何在单个kafka主题(带有分区)上运行同一消费者组的多个消费者?
卡夫卡ver 0.10 Spark版本2.2 Scala版本2.11
UPDATE-EDIT:在此处阅读答案:Spark Direct Streaming - consume same message in multiple consumers
我发现false
不不支持同一组的多个使用者。我想我需要找到其他解决方案。
所以我的下一个问题是-DirectStream是否提供任何性能解决方案来弥补缺乏使用组中多个使用者(即从事相同工作)的能力?
答案 0 :(得分:0)
Spark的全部目的是允许您并行执行数据执行,而无需“手动”平衡负载。使用者组是针对相反情况设计的-您可以通过在使用者组中添加新实例来“手动”扩展。
现实中的问题是关于Spark应用程序的可伸缩性-您需要添加更多详细信息,例如正在执行的处理类型,遇到的性能问题,主题中有多少分区等等。