flink维表查询redis之flink-connector-redis

项目介绍

基于bahir-flink二次开发,相对bahir调整的内容有:

1.使用Lettuce替换Jedis,同步读写改为异步读写,大幅度提升了性能 
2.增加了Table/SQL API,增加维表join查询支持
3.增加查询缓存(支持增量与全量)
4.增加支持整行保存功能,用于多字段的维表关联查询
5.增加限流功能,用于Flink SQL在线调试功能
6.增加支持Flink高版本(包括1.12,1.13,1.14+)
7.统一过期策略等
8.支持flink cdc删除及其它RowKind.DELETE

因bahir使用的flink接口版本较老,所以改动较大,开发过程中参考了腾讯云与阿里云两家产商的流计算产品,取两家之长,并增加了更丰富的功能。

使用注意:redis不支持两段提交,故无法实现刚好一次。

支持功能对应redis的操作命令有:

插入/CDC插入与更新 维表查询
set get
hset hget
rpush lpush
incrBy incrByFloat decrBy hincrBy hincryByFloat zincrby
sadd zadd pfadd(hyperloglog)
publish
zrem srem
del hdel

CDC时支持类型

CDC插入及更新 CDC删除时响应操作
set del
hset hdel
rpush lpush 不响应
incrBy incrByFloat decrBy hincrBy hincryByFloat zincrby 写入相对值,如:incrby 2 -> incryby -2
sadd zadd srem zrem
pfadd(hyperloglog) 不响应
publish 不响应
zrem srem 不响应
del hdel 不响应
注:cdc更新操作与插入效果相同

使用方法:

1.打包命令: mvn package -DskipTests
2.将生成的包放入flink lib中即可,无需其它设置。


项目依赖Lettuce(6.2.1)及netty-transport-native-epoll(4.1.82.Final),如flink环境有这两个包,则使用flink-connector-redis-1.3.2.jar, 否则使用flink-connector-redis-1.3.2-jar-with-dependencies.jar。

开发环境工程直接引用:

<dependency>
    <groupId>io.github.jeff-zou</groupId>
    <artifactId>flink-connector-redis</artifactId>
    <!-- 没有单独引入项目依赖Lettuce netty-transport-native-epoll依赖时 -->
    <!--            <classifier>jar-with-dependencies</classifier>-->
    <version>1.3.2</version>
</dependency>

使用说明:

value.data.structure = column(默认)

无需通过primary key来映射redis中的Key,直接由ddl中的字段顺序来决定Key,如:

create table sink_redis(username VARCHAR, passport VARCHAR)  with ('command'='set') 
其中username为key, passport为value.

create table sink_redis(name VARCHAR, subject VARCHAR, score VARCHAR)  with ('command'='hset') 
其中name为map结构的key, subject为field, score为value.
value.data.structure = row

整行内容保存至value并以’\01’分割

create table sink_redis(username VARCHAR, passport VARCHAR)  with ('command'='set') 
其中username为key, username\01passport为value.

create table 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值