flink 双流jion 使用union all + groupby方式实现
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
select
client_time,
user_id
record_id,
'' client_ip,
'' card_name,
'' event_type
from table_b
where REGEXP(substr(client_time,1,10),'[0-9]{4}-[0-9]{2}-[0-9]{2}')
union all
select
client_time,
user_id
record_id,
'' client_ip,
card_name,
event_type
from table_c
where REGEXP(substr(client_time,1,10),'[0-9]{4}-[0-9]{2}-[0-9]{2}')
)x GROUP BY user_id, record_id,TUMBLE(proctime(), INTERVAL '10' second)
3、实践经验
上面sql代码,公司业务每天的数据量有几个亿,同时在3秒内完成业务流程。实际分配的exectur是4G,发现超过10秒窗口后,就频繁GC报错,所以根据实际的业务场景,时间窗口越大,资源消耗越大,这一点需要注意。
flink 双流jion 使用union all + groupby方式实现相关推荐
- 面试官: Flink双流JOIN了解吗? 简单说说其实现原理
摘要:今天和大家聊聊Flink双流Join问题.这是一个高频面试点,也是工作中常遇到的一种真实场景. 本文分享自华为云社区<万字直通面试:Flink双流JOIN>,作者:大数据兵工厂 . ...
- Flink双流JOIN
1.引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作.如下所示的订单查询SQL,通过将订单表的id和订单详情表order_id关联,获取所有订单下的商品信息. sele ...
- Flink 双流 Join 的3种操作示例
在数据库中的静态表上做 OLAP 分析时,两表 join 是非常常见的操作.同理,在流式处理作业中,有时也需要在两条流上做 join 以获得更丰富的信息.Flink DataStream API 为用 ...
- Flink结合Iceberg的一种实现方式笔记
前言 当前Iceberg仅支持flink 1.11.x 使用Datastream和Table API写iceberg表,鉴于hive catalog 的测试暂时未通过 参考ISSUE, 故以下使用ha ...
- Flink处理迟到数据的几种方式
方式1:设置水位线延迟时间 水位线延迟设置,一般设置为毫秒到秒级别. SingleOutputStreamOperator<Event> watermarks = streamOperat ...
- Flink SQL的打印输出的几种方式
打广告!!!!!!!!!!!!!!!!!!!!!!!!!: 先跟鸡哥打个广告 ,博客地址: https://me.csdn.net/weixin_47482194 写的博客很有水平的,上了几次官网推荐 ...
- 阿里云大数据开发三面面经,已过,面试题已配答案
一面:阿里云大数据开发一面面经,已过,面试题已配答案_蓦然_的博客-CSDN博客 二面:阿里云大数据开发二面面经,已过,面试题已配答案_蓦然_的博客-CSDN博客 1.SQL题 自由发挥 2.实习经历 ...
- Flink教程(20)- Flink高级特性(双流Join)
文章目录 01 引言 02 双流join介绍 03 Window Join 3.1 Tumbling Window Join 3.2 Sliding Window Join 3.3 Session W ...
- flink读写hive-代码方式
注意: flink读写hive有两种方式, 一种是connector方式, 一种是jdbc方式. jdbc因为性能上的问题,该方式没有尝试的意义. ########################## ...
最新文章
- 磁盘显示执行页内操作时的错误要如何找到资料
- APM - Hello Javaagent
- 页面放在哪_seo页面怎么优化?seo页面优化有哪些方法?
- java 10000阶乘_Java ForkJoinPool: 3秒计算100万的阶乘
- java ajax html复选框,HTMLjavaSkcriptCSSjQueryajax(九)(示例代码)
- 顺序结构实现【数据结构】
- 使用静态内置类实现线程安全的单例设计模式
- C语言实现粒子群算法(PSO)一
- 我为啥不想用Python
- jni回调java类中函数_Andriod JNI编程之C++回调Java函数
- iOS多线程(一):GCD的基本使用
- 3篇SCI定A类博士!直聘副教授七级!有偿70㎡住房+30万安家费+25万科启
- Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe did not run properly!
- wps如何保存最终状态_Word 无法保存“最终状态”
- Android集成招行一网通
- esp8266_arduino源码
- 解析单存储库:定义、优势与挑战
- 身份证OCR实名认证接口
- 周杰伦:他们只顾嘲讽,却不知眼前是神的降生
- 关于交换机的现网接入配置简述