使用Spark Streaming中的直接Kafka API,驱动程序查询分区偏移的频率是多少?

时间:2015-11-17 15:12:47

标签: apache-kafka spark-streaming

是否针对每个批次间隔或以不同的频率查询偏移量?

1 个答案:

答案 0 :(得分:0)

当您使用术语偏移时,我假设您意味着偏移而不是实际消息。通过文档查看,我能够找到两个直接方法的参考。

第一个来自Apache Spark Docs

  

此方法不是使用接收器来接收数据,而是定期向Kafka查询每个主题+分区中的最新偏移量,并相应地定义要在每个批次中处理的偏移量范围。当启动处理数据的作业时,Kafka的简单消费者API用于从Kafka读取定义的偏移范围(类似于从文件系统读取的文件)。

这使得它似乎有独立的行动。从Kafka查询偏移量,然后分配给特定批次的处理。从Kafka查询偏移量可以返回覆盖多个Spark批处理作业的偏移量。

第二个,来自数据库的blog post

  

我们不是使用Receiver连续接收数据并将其存储在WAL中,而是在每个批处理间隔的开始处决定消耗的偏移范围。之后,当执行每个批处理的作业时,将从Kafka读取与偏移范围对应的数据进行处理(类似于读取HDFS文件的方式)。

这个看起来更像每个批处理间隔本身提取一系列消耗的偏移量。然后当运行时实际从Kafka获取这些消息。

我从未使用过Apache Spark,我主要使用的是Apache Storm + Kafka,但是由于第一个文档建议它们可以在不同的时间间隔发生,我认为它们可以在不同的时间间隔发生,并且博客文章只是没有'提到它,因为它没有进入技术细节。