Apache flink Flink SQL:使用登录数据实时计算新用户数

Apache flink Flink SQL:使用登录数据实时计算新用户数,apache-flink,Apache Flink,我使用的是FlinkSQL1.13。目标是实时计算新用户的数量 由于一些限制,我不能直接使用register events,因为在那里创建的帐户就像平台通行证一样。一个帐户可以登录多个游戏,对于每个游戏,用户在首次进入该游戏时都是new。因此,我只能通过检查这个帐户是否已经从登录日志登录到这个游戏来计算。登录日志的格式如下: user_id game_id login_time 111 game1 2021-05-13 01:01:01 111 game3

我使用的是FlinkSQL1.13。目标是实时计算新用户的数量

由于一些限制,我不能直接使用register events,因为在那里创建的帐户就像平台通行证一样。一个帐户可以登录多个游戏,对于每个游戏,用户在首次进入该游戏时都是
new
。因此,我只能通过检查这个帐户是否已经从登录日志登录到这个游戏来计算。登录日志的格式如下:

user_id  game_id  login_time
111        game1    2021-05-13 01:01:01
111        game3    2021-05-23 02:02:02
问题是登录日志的数量每天都在显著增加。虽然我可以将日志保存到
HBase
,但总有一天它还是会太大

还有别的办法吗?也许我可以将历史用户放入redis hyperloglog,但Flink SQL似乎还没有redis连接器…提前感谢您的帮助

INSERT INTO first_login_stream (user_id, first_login_time)
SELECT
  user_id,
  FIRST_VALUE(login_time) first_login_time
FROM login_log
GROUP BY user_id
回到你的活动系统/卡夫卡。您可以在windows中读取某些小时统计数据(您可以将其保存在HBase中):

插入hbase\u统计数据
挑选
窗口启动,
窗尾,
计数(用户id)用户计数
从桌子上(
翻滚(
表1\u登录\u流,
描述符(),
间隔“1”小时
)
)
分组
窗口启动,
窗端
必须对其进行检查/保存(否则重新启动时将导致完整的日志处理)。状态大小只会随着用户数量的增加而增加,而不会随着登录次数的增加而增加(我想,你应该验证一下)

INSERT INTO hbase_stats
SELECT 
  window_start, 
  window_end, 
  count(user_id) user_count
FROM TABLE(
  TUMBLE(
    TABLE first_login_stream, 
    DESCRIPTOR(<kafka_ingestion_time>), 
    INTERVAL '1' HOUR
  )
)
GROUP BY 
  window_start,
  window_end