1、简述
在基于flink的实时计算中,会有实时流join的需求,公司目前使用的是flink1.11版本,是实际的生产中,发现效果不好,甚至几乎join不到,同时多流join显得比较复杂,和同事沟通同时结合自己实践经验,想到使用union + window groupby的方式来实现 多流jion。
flink 双流join 文档:Apache Flink 1.12 Documentation: 流上的 Join
2、代码实践
insert into table_sink
SELECT
user_id,
min(client_time) client_time,
record_id,
max(client_ip) client_ip,
max(card_name) card_name,
max(event_type) event_type
FROM (
select
client_time,
user_id
record_id,
client_ip,
'' card_name,
'' event_type
from table_a
where REGEXP(substr(client_time,1,10),'[0-9]{4}-[0-9]{2}-[0-9]{2}')
union all

本文介绍了在Flink1.11版本中遇到的实时流Join问题,提出了一种使用Union+WindowGroupBy的替代方案。通过将不同数据流union后进行窗口分组聚合,实现了多流Join。然而,在处理每天几个亿的数据量时,窗口大小与资源消耗成正比,导致超过10秒窗口后频繁出现GC错误。因此,对于大规模数据实时处理,需注意窗口大小对资源的影响。
最低0.47元/天 解锁文章
936

被折叠的 条评论
为什么被折叠?



