【实战-05】 flinksql look up join

摘要

look up join 能做什么? 不饶关子直接说答案, look up join 就是 广播。 重要是事情说三遍,广播。flinksql中的look up join 就类似于flinks flink Datastream api中的广播的概念,但是又不完全相同,对于初次访问的数据会加入缓存, 一定时间未访问到的则会从缓存中去除。而广播则是直接广播到每个exxcotor.

比如我们有一张订单表orders, 那么假设我们在进行flink计算的时候想获取该订单的相关的用户数据。 此时可以将用户数据用look up join 加载进来。
look up join 又称维表 在DataStream 中又称伟广播, 理解了这些就比较简单了。

缺点

不适合大量数据的 look up join, 因为会占用过多内存。 在业内很多人喜欢用hbase做缓存插件。也可以用 mysql 等其他外部存储系统,在任务启动的时候 外部的维表会被加载到任务内存中

语法

左表 要设置proress Time , 右表为 缓存表

sql 复制代码
create TEMPORARY table orders(
   `order_id` VARCHAR,                                                
   `order_info` VARCHAR,
   `user_id` VARCHAR,
   process_time AS PROCTIME()  # 这句语法是严格要求的
)with(
    'connector' = 'kafka',                                       
 	'topic' = 'topic-01;topic-02',                                   
 	'properties.bootstrap.servers' = 'xxx:9092,yyy:9092',
 	'properties.group.id' = 'test',
 	'scan.startup.mode' = 'timestamp',
   'scan.startup.timestamp-millis' = '1680883200000',
 	'format' = 'raw'
 );
create TEMPORARY table users(     
	`user_id` VARCHAR,                                          
	`user_name` VARCHAR
)with(
    # 其他外部系统,省略
 );
 
SELECT 
	o.order_id, 
	o.order_info,
	u.user_id,
	u.user_name
FROM orders AS o
left JOIN users FOR SYSTEM_TIME AS OF o.proc_time AS u # 这句语法是严格要求的
ON o.user_id= u.user_id
where ...# 省略where语句
;
# 注意: 一般都是用left  join 
相关推荐
iphone1088 分钟前
视频创作者如何用高级数据分析功能精准优化视频策略
大数据·数据挖掘·数据分析·音视频·视频功能·视频创作者
武子康1 小时前
大数据-79 Kafka 监控从入门到实战:度量体系、JMX采集与可视化告警全流程 Prometheus、Kafka Eagle
大数据·后端·kafka
DDC楼宇自控与IBMS集成系统解读1 小时前
BA 楼宇自控系统 + AI:重构楼宇设备管理的 “智能决策” 体系
大数据·网络·数据库·人工智能·3d·重构
用户199701080182 小时前
小红书商品列表API开发指南
大数据·数据挖掘·数据分析
计算机毕设残哥2 小时前
大数据毕业设计选题:基于大数据的用户贷款行为数据分析系统Spark SQL核心技术
大数据·spark·课程设计
江瀚视野2 小时前
多地闭店上热搜,中产的白月光无印良品怎么了?
大数据·人工智能
暖苏2 小时前
python-多线程(笔记)(持续更新)
大数据·开发语言·python
IT观察3 小时前
Spark 节点 IDO 正式开启 —引领 PayFi 新时代
大数据·spark
道一云黑板报4 小时前
Spark云原生流处理实战与风控应用
大数据·ai·云原生·spark·kubernetes·ai编程