通过Spark Streaming加载同一组的1个以上消费者时Kafka异常

时间:2018-07-05 10:03:36

标签: scala apache-spark apache-kafka streaming

我使用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是否提供任何性能解决方案来弥补缺乏使用组中多个使用者(即从事相同工作)的能力?

1 个答案:

答案 0 :(得分:0)

Spark的全部目的是允许您并行执行数据执行,而无需“手动”平衡负载。使用者组是针对相反情况设计的-您可以通过在使用者组中添加新实例来“手动”扩展。

现实中的问题是关于Spark应用程序的可伸缩性-您需要添加更多详细信息,例如正在执行的处理类型,遇到的性能问题,主题中有多少分区等等。