kafka过去x分钟的实时平均值

hjzp0vay  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(311)

我有一个关于单个代理的主题,其中包含不断传入的有关用户单击的数据。我希望能够计算平均点击次数在过去x分钟内每个用户在近实时(1秒为例)。
我试着用kafka流来做,但问题是thumbling窗口不能近实时地计算,并且不能平均每秒钟更新最近x分钟的所有值。跳跃窗口可能适合,但对于跳跃=1秒和5分钟大小的窗口,它将创建300个窗口,我想从性能方面看太多了。
有没有办法不用第三方流媒体引擎spark,而是用“普通”的kafkaapi(Kafka流媒体是可选的)。
多谢了!

ma8fv8wu

ma8fv8wu1#

正如评论者所说——使用Kafka流,或ksql。ksql运行在kafka流之上,因此数据建模和诸如窗口和聚合之类的概念是相同的。
在ksql中:

ksql> CREATE TABLE USER_CLICKS_PER_MINUTE AS \
SELECT USER_ID, COUNT(*) AS CLICK_COUNT, \
COUNT(*)/5 AS CLICKS_PER_MINUTE \
FROM RATINGS WINDOW HOPPING (SIZE 5 MINUTES, ADVANCE BY 1 SECOND) \
GROUP BY USER_ID;

 Message
---------------------------
 Table created and running
---------------------------

查询有状态聚合:

ksql> SELECT TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss'), USER_ID, \
CLICK_COUNT, CLICKS_PER_MINUTE \
FROM USER_CLICKS_PER_MINUTE \
WHERE USER_ID=18;
2018-05-09 11:44:33 | 18 | 7 | 1
2018-05-09 11:44:34 | 18 | 7 | 1
2018-05-09 11:44:35 | 18 | 7 | 1
2018-05-09 11:44:36 | 18 | 9 | 1
2018-05-09 11:44:37 | 18 | 9 | 1
2018-05-09 11:44:38 | 18 | 10 | 2
2018-05-09 11:44:39 | 18 | 10 | 2
2018-05-09 11:44:40 | 18 | 10 | 2
2018-05-09 11:44:41 | 18 | 12 | 2
2018-05-09 11:44:42 | 18 | 12 | 2
2018-05-09 11:44:43 | 18 | 12 | 2
2018-05-09 11:44:44 | 18 | 12 | 2
2018-05-09 11:44:45 | 18 | 12 | 2
2018-05-09 11:44:46 | 18 | 12 | 2
2018-05-09 11:44:47 | 18 | 12 | 2
2018-05-09 11:44:48 | 18 | 12 | 2
2018-05-09 11:44:49 | 18 | 12 | 2
2018-05-09 11:44:50 | 18 | 12 | 2
2018-05-09 11:44:51 | 18 | 13 | 2
2018-05-09 11:44:52 | 18 | 13 | 2
2018-05-09 11:44:53 | 18 | 13 | 2
2018-05-09 11:44:54 | 18 | 13 | 2
2018-05-09 11:44:55 | 18 | 13 | 2
2018-05-09 11:44:56 | 18 | 13 | 2
2018-05-09 11:44:57 | 18 | 13 | 2
2018-05-09 11:44:58 | 18 | 13 | 2
2018-05-09 11:44:59 | 18 | 13 | 2
2018-05-09 11:45:00 | 18 | 13 | 2
2018-05-09 11:45:01 | 18 | 13 | 2

请记住,随着新事件的到来,kafka流和ksql(基于kafka流构建)将在给定的时间窗口内重新发出聚合。根据您的要求,实际的跳跃窗口每1秒前进可能不是您想要的。一个正在实时更新的简单滚动窗口仍然会给您有状态聚合的实时结果。
有关ksql的更多信息,请参见:
https://www.confluent.io/product/ksql/
ksql文档
ksql语法参考
ksql快速入门教程
ksql视频教程

相关问题