【问题标题】:How can I get last N records from a stream using Kafka KSQL如何使用 Kafka KSQL 从流中获取最后 N 条记录
【发布时间】:2020-11-27 23:25:23
【问题描述】:

假设我有一个包含股票价格的流。每条记录由

  • 代码

  • 价格

例如

  • AAPL,102.23
  • FB,23.34
  • AAPL,101.99
  • AMZN,45.43
  • ...

我需要获取 AAPL 的最后 60 条价格记录。我不想使用时间窗口 - 只是最近 60 条记录。

【问题讨论】:

  • 我觉得ksql做不到,但是kafkacat可以

标签: apache-kafka ksqldb


【解决方案1】:

您可以构建一个表格来跟踪每个代码的最近 60 个价格,使用类似的东西:

CREATE TABLE RECENT_PRICES AS 
  SELECT
    tickerId,
    LATEST_BY_OFFSET(price, 60) AS PRICES
  FROM TICKS
  GROUP BY tickerId;

LATEST_BY_OFFSET docs.

PRICES 列将是一个 ARRAY<DECIMAL(?, ?)>,其中包含最新的 60 个价格。

注意:这是最新的偏移量,而不是时间戳。所以乱序数据可能会导致问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 2011-05-24
    • 2015-04-29
    • 2019-07-09
    • 2018-03-19
    • 2015-10-12
    相关资源
    最近更新 更多