如何根据spark
设置kafka topic
作业从specific offset
获取timestamp
?让我们说我需要从kafka主题starting 6 hours ago
获取所有数据。
答案 0 :(得分:2)
卡夫卡不会这样做。你看到Kafka就像你可以使用另一个不同于offset的参数查询的东西,除了请记住,主题可以有多个分区,所以每个分区都有不同的分区。也许你可以使用另一个关系存储来映射带时间戳的偏移/分区,有点冒险。例如,在akka流卡夫卡消费者中思考,您的每个时间戳请求都应通过另一个主题发送以激活您的消费者(每个消息都分配了一个或多个分区)并查询特定的偏移,生成和合并。使用Spark,您可以调整每个作业的消费者策略,但过程应该相同。
另一件事是,如果您的Kafka恢复可能需要阅读整个主题以更新您的对(时间戳/偏移)。所有这些听起来有点奇怪,也许最好将你的主题存储在Cassandra中(例如),你可以稍后查询。
答案 1 :(得分:0)
Kafka是一个仅附加日志存储。如果您知道偏移量,则可以从分区中的特定偏移量开始消耗。消耗速度非常快,您可以设计一个从smallest
偏移量开始的设计,并且只有在遇到消息后才开始执行某些逻辑(可能需要timestamp
字段来检查) 。