近期,我们基于Flink SQL的实时数仓逐渐过渡到DWS层,接到一些对于最终计算指标需要入HBase和Redis等存储引擎以便于下游的各类数据服务可以获取。所以需要一个Redis Connector。 于是,基于Apache Bahir的Redis Connector我做了一些定制化开发,最终使得其支持Flink SQL将带有撤回语义的Upsert流入
@Before public void init() { /** 设置当前属于测试模式,在这个测试模式下,当流表数据消费完成后程序会停止,方便测试,这个模式默认false */ RedisOptions.IS_TEST = true; RedisOperator redisOperator = RedisOperators.getSimple("10.201.0.33",6379,"123456",0); List<String> lists = new ArrayList<>()...
最近有个需求,需要使用flinksql读写redis,由于官网上并没有redis的connector,在网上找了很久,开源的几个connector又没法满足要求,所有这里就自己动手实现了一个。已经适配了各个版本的flink,从flink1.12到flink1.15
我们首先需要创建一个 Redis 表,然后将数据写入这个表。以下是实现步骤: 创建Redis表 我们需要在 Flink 中注册一个 Redis 输出表。可以通过 SQL DDL 语法实现: importorg.apache.flink.table.api.environment.BatchTableEnvironment;importorg.apache.flink.table.api.EnvironmentSettings;publicclassFlinkRedisExample{publi...
Flink Stream ApiApache Bahir已经实现了redis对应的连接器 Flink streaming connector for Redismaven仓库如下 <dependency> <groupId>org.apache.bahir</groupId> <artifactId>flink-co…
Flink SQL之所以简洁易用而功能强大,其中一个重要因素就是其拥有丰富的Connector(连接器)组件。Connector是Flink与外部系统交互的载体,并分为负责读取的Source和负责写入的Sink两大类。不过,Flink SQL内置的Connector有可能无法cover实际业务中的种种需求,需要我们自
flink-connector-redis的使用方式和其他连接器几乎一样,除了一些公共的参数外(connector.type, format.type, or update-mode等),还支持以下参数 为了满足业务和数据的多样性,根据connector.data.type来确定写入的数据结构 1.string 取sql的第一个字段为key,第二个字段为value,调用set方法将数据写入,在这里我们使用拼...
// 定义 redis 表tEnv.executeSql("""|create table redis_sink (|f1 STRING,|f2 INT|) WITH (|'connector' = 'redis',|'host' = 'xxx',|'port' = '6379',|'expire' = '100'|)|""".stripMargin)// 执行插入 SQLtEnv.executeSql("""|insert into redis_sink|select f_random_str,f_...
SQL效果 DDL 创建Redis维表:CREATETABLE dim_users ( k string, f string, v string) WITH ('connector.type' = 'redis','redis-mode' = 'cluster','cluster-nodes' = 'ip:prot,ip:port','command'='hget','schema.0.from'='key','schema.1.from'='field','schema.2.from'='value');预...