假设我刚刚推出了kafka direct stream+spark流媒体应用程序。对于第一批,驱动程序中的流上下文连接到kafka并获取startoffset和endoffset。然后,它启动一个带有这些开始和结束偏移范围的spark作业,以便执行者从kafka获取记录。我的问题从这里开始。当第二批的时间到了时,流式处理上下文连接到开始和结束偏移范围的kafka。当没有允许存储最后提交偏移量值的使用者组(因为direct stream不考虑group.id)时,kafka如何给出这些范围?
假设我刚刚推出了kafka direct stream+spark流媒体应用程序。对于第一批,驱动程序中的流上下文连接到kafka并获取startoffset和endoffset。然后,它启动一个带有这些开始和结束偏移范围的spark作业,以便执行者从kafka获取记录。我的问题从这里开始。当第二批的时间到了时,流式处理上下文连接到开始和结束偏移范围的kafka。当没有允许存储最后提交偏移量值的使用者组(因为direct stream不考虑group.id)时,kafka如何给出这些范围?
1条答案
按热度按时间jdgnovmf1#
使用kafka消费api时,总是有一个消费组。不管您处理的是哪种流(spark direct streaming、spark structured streaming、kafka consumer的java/scala api……)。
因为直接流不考虑group.id
请参阅spark+kafka直接流媒体集成指南(spark-streaming-kafka010的代码示例),了解如何声明消费群体:
即使您没有在配置中声明使用者组,仍然会为您创建一个(随机的)使用者组。
检查日志以查看应用程序中使用了哪个group.id。