如何解决通过使用两个不同的Spark结构化流读取同一主题来调试Kafka管道
我有一个Kafka主题,该主题正在我的作品中流式传输数据。我想将相同的数据流用于调试目的,并且不影响现有管道的偏移量。
我记得在早期版本中为此目的创建了不同的消费者组,但是我使用Spark结构化流从kafka读取数据,不鼓励在从kafka读取数据时使用groupID。
解决方法
每个Spark结构化流都将创建一个唯一的ConsumerGroup,如您在the documentation中所见:
// Each running query should use its own group id. Otherwise,the query may be only assigned
// partial data since Kafka will assign partitions to multiple consumers having the same group
// id. Hence,we should generate a unique id for each query.
val uniqueGroupId = s"spark-kafka-source-${UUID.randomUUID}-${metadataPath.hashCode}"
由于Spark在其自己的检查点文件中管理偏移量,并且永远不会将任何偏移量提交回Kafka,因此您的两个结构化流作业不会就其偏移量相互干扰。两者将彼此完全独立运行,您无需执行任何操作。为每个流作业设置单独的检查点目录可能会有所帮助。
我已经通过Kafka主题code阅读了关于火花管理结构化流作业的偏移管理的更详细答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。