代码之家  ›  专栏  ›  技术社区  ›  Casel Chen

如何从ksql窗口表对应的kafka主题中获取窗口开始或结束时间?

  •  2
  • Casel Chen  · 技术社区  · 7 年前

    我想从kafka console consumer命令获取窗口开始时间戳(这里是1530008520000)。

    它与ksql一起工作:

    ksql> select * from DEV_MONITOR_RULE_2557_104782_233_2_TABLE;
    
    1530008581051 | 2557 : Window{start=1530008520000 end=-} | 2557 | 2 | 1530008581051
    

    但它不适用于卡夫卡控制台消费者?

    ./bin/kafka-console-consumer --zookeeper 10.12.0.157:2181 --topic DEV_MONITOR_RULE_2557_104782_233_2_TABLE
    
    {"HITCOUNTS":2,"TENANTID":2557,"HITTIME":1530008581051}
    

    如何从Kafka控制台消费者打印窗口开始时间(这里是1530008520000)?

    谢谢!

    2 回复  |  直到 7 年前
        1
  •  1
  •   Robin Moffatt    7 年前

    窗口开始时间反映在 ROWTIME 在ksql消息的时间戳中。这个时间戳您可以使用用于处理kafka消息的标准api来访问。

    阿飞 kafka-console-consumer 不支持显示时间戳。不管怎样 kafkacat 做。

    下面是ksql中的一些聚合数据,其中 划线时间 显示窗口的开始(和 TIMESTAMPTOSTRING 习惯了漂亮的印刷品):

    ksql> SELECT TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss'), ROWTIME, STARS, STAR_COUNT FROM RATINGS_AGG2;
    2018-06-27 09:30:00 | 1530091800000 | 1 | 2
    2018-06-27 09:30:00 | 1530091800000 | 4 | 6
    2018-06-27 09:30:00 | 1530091800000 | 2 | 2
    2018-06-27 09:30:00 | 1530091800000 | 3 | 3
    

    现在同一个话题 卡夫卡 :

    $ kafkacat -b localhost:9092 -C -K: \
      -f '\nTimestamp: %T\t\tValue (%S bytes): %s' \
      -t RATINGS_AGG2
    
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":1,"STARS":1}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":2,"STARS":1}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":3,"STARS":3}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":5,"STARS":1}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":6,"STARS":3}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":7,"STARS":1}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":7,"STARS":3}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":9,"STARS":1}
    Timestamp: 1530091800000                Value (26 bytes): {"STAR_COUNT":9,"STARS":3}
    
        2
  •  0
  •   miguno    7 年前

    你试过卡夫卡控制台的消费者选项吗? print.timestamp=true ?

    $ kafka-console-consumer --property print.timestamp=true ...
    
    推荐文章