Spark +根据时间戳从特定偏移量中读取kafka主题

时间:2018-05-03 09:16:27

标签: apache-spark apache-kafka

如何根据spark设置kafka topic作业从specific offset获取timestamp?让我们说我需要从kafka主题starting 6 hours ago获取所有数据。

2 个答案:

答案 0 :(得分:2)

卡夫卡不会这样做。你看到Kafka就像你可以使用另一个不同于offset的参数查询的东西,除了请记住,主题可以有多个分区,所以每个分区都有不同的分区。也许你可以使用另一个关系存储来映射带时间戳的偏移/分区,有点冒险。例如,在akka流卡夫卡消费者中思考,您的每个时间戳请求都应通过另一个主题发送以激活您的消费者(每个消息都分配了一个或多个分区)并查询特定的偏移,生成和合并。使用Spark,您可以调整每个作业的消费者策略,但过程应该相同。

另一件事是,如果您的Kafka恢复可能需要阅读整个主题以更新您的对(时间戳/偏移)。所有这些听起来有点奇怪,也许最好将你的主题存储在Cassandra中(例如),你可以稍后查询。

答案 1 :(得分:0)

Kafka是一个仅附加日志存储。如果您知道偏移量,则可以从分区中的特定偏移量开始消耗。消耗速度非常快,您可以设计一个从smallest偏移量开始的设计,并且只有在遇到消息后才开始执行某些逻辑(可能需要timestamp字段来检查) 。