Flink SQL经常需要关联维表,使用redis作为维表存储介质能获得较快的响应速度,大多情况维表有多个字段,写入与维表查询时只能使用concat与table function函数处理,非常麻烦。有没有更简单的方法呢?
本示例基于flink-connector-redis展示如何利用’value.data.structure’='row’写多字段并关联查询,无需定义table function函数。
写入多字段的维表测试数据
-- 创建表
create table sink_redis(uid VARCHAR,score double,score2 double )
with ( 'connector' = 'redis',
'host' = '10.11.69.176',
'port' = '6379',
'redis-mode' = 'single',
'password' = '****',
'command' = 'SET',
'value.data.structure' = 'row'); -- 'value.data.structure'='row':整行内容保存至value并以'\01'分割
-- 写入测试数据,score、score2为需要被关联查询出的两个维度
insert into sink_redis select * from (values ('1', 10.3, 10.1));
写入数据后,在redis中value保存的value为: “1\x0110.3\x0110.1”,至此关联数据准备就绪。
创建源表与关联表
-- create join table --
create table join_table with ('command'='get', 'value.data.structure'='row') like sink_redis


3098

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



