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

icomxhvb  于 2021-08-20  发布在  Kafka
关注(0)|答案(2)|浏览(518)

我想从kafka console consumer命令获取窗口开始时间戳(这里是1530008520000)。
它与ksql配合使用:

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

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

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

如何从kafka控制台用户打印窗口开始时间(这里是1530008520000)?
谢谢!

qnakjoqk

qnakjoqk1#

窗口开始时间反映在 ROWTIME 以及Kafka消息的时间戳。您可以使用用于处理kafka消息的标准api访问此时间戳。
阿飞 kafka-console-consumer 不支持显示时间戳。不管怎样 kafkacat 做。
下面是ksql中的一些聚合数据 ROWTIME 显示窗口的开始(和 TIMESTAMPTOSTRING 习惯了漂亮的印刷品):

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

同样的主题 kafkacat :

  1. $ kafkacat -b localhost:9092 -C -K: \
  2. -f '\nTimestamp: %T\t\tValue (%S bytes): %s' \
  3. -t RATINGS_AGG2
  4. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":1,"STARS":1}
  5. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":2,"STARS":1}
  6. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":3,"STARS":3}
  7. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":5,"STARS":1}
  8. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":6,"STARS":3}
  9. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":7,"STARS":1}
  10. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":7,"STARS":3}
  11. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":9,"STARS":1}
  12. Timestamp: 1530091800000 Value (26 bytes): {"STAR_COUNT":9,"STARS":3}
展开查看全部
z9gpfhce

z9gpfhce2#

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

  1. $ kafka-console-consumer --property print.timestamp=true ...

相关问题