是否针对每个批次间隔或以不同的频率查询偏移量?
答案 0 :(得分:0)
当您使用术语偏移时,我假设您意味着偏移而不是实际消息。通过文档查看,我能够找到两个直接方法的参考。
第一个来自Apache Spark Docs
此方法不是使用接收器来接收数据,而是定期向Kafka查询每个主题+分区中的最新偏移量,并相应地定义要在每个批次中处理的偏移量范围。当启动处理数据的作业时,Kafka的简单消费者API用于从Kafka读取定义的偏移范围(类似于从文件系统读取的文件)。
这使得它似乎有独立的行动。从Kafka查询偏移量,然后分配给特定批次的处理。从Kafka查询偏移量可以返回覆盖多个Spark批处理作业的偏移量。
第二个,来自数据库的blog post
我们不是使用Receiver连续接收数据并将其存储在WAL中,而是在每个批处理间隔的开始处决定消耗的偏移范围。之后,当执行每个批处理的作业时,将从Kafka读取与偏移范围对应的数据进行处理(类似于读取HDFS文件的方式)。
这个看起来更像每个批处理间隔本身提取一系列消耗的偏移量。然后当运行时实际从Kafka获取这些消息。
我从未使用过Apache Spark,我主要使用的是Apache Storm + Kafka,但是由于第一个文档建议它们可以在不同的时间间隔发生,我认为它们可以在不同的时间间隔发生,并且博客文章只是没有'提到它,因为它没有进入技术细节。