我正在尝试通过Kafka使用结构化流来读取和写入消息。如果我使用结构化流,spark将偏移量存储到检查点目录。 ?
答案 0 :(得分:-1)
默认情况下,结构化流式传输会生成一个唯一的组ID,以从kafka读取数据,以确保没有其他使用者通过该组ID读取数据。 (可选)您可以将kafka组ID设置为从kafka读取数据,但必须确保没有其他使用者使用该组ID,否则您的工作可能只能读取部分数据。使用hdfs作为检查点dir和hdfs复制因子的结构化流确保即使一个节点出现故障,数据也将被复制到其他节点,并且使检查点具有容错能力。
在写入任何接收器时必须提供检查点位置,并且spark会保持在该触发器上处理的偏移范围。如果您要为多个作业提供相同的检查点位置,那么从同一主题进行消费将很成问题。
通过最早配置startingOffset,总是每次都从起点开始。在哪里提交偏移量都没有关系。