美文网首页
flink1.12 sql向redis实时写数据

flink1.12 sql向redis实时写数据

作者: 山里小龙 | 来源:发表于2021-07-07 16:22 被阅读0次

插件名称:flink-connector-redis

插件地址:https://github.com/jeff-zou/flink-connector-redis.git

项目介绍

基于bahir-flink二次开发,使它支持SQL直接定义写入redis,用户通过DDL指定自己需要保存的字段。

使用方法:

命令行执行 mvn package -DskipTests=true打包后,将生成的包flink-connector-redis_2.12-1.11.1.jar引入flink lib中即可,无需其它设置。

重构介绍:

相对上一个版本简化了参数设置,思路更清晰,上一版本字段的值会根据主键等条件来自动生成,这要求使用者需要了解相关规则,有一定的学习成本并且容易埋坑,重构后字段的值由用户在DDL中显示地指定,如下:

  'key-column'='username','value-column'='passport',' //直接指定字段名

取消了必须有主键的限制,使用更简单,如果有多个字段组合成key或者value,需要用户在DML中使用concat_ws等方式组装,不再是插件在后台用不可见字符拼装。

使用示例:

  • 1.SQL方式

    示例代码路径: src/test/java/org.apache.flink.streaming.connectors.redis.table.SQLInsertTest.java

    set示例,相当于redis命令: set test test11
       StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        EnvironmentSettings environmentSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
        StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, environmentSettings);

        String ddl = "create table sink_redis(username VARCHAR, passport VARCHAR) with ( 'connector'='redis', " +
                "'host'='10.11.80.147','port'='7001', 'redis-mode'='single','password'='******','key-column'='username','value-column'='passport','command'='set')" ;

        tEnv.executeSql(ddl);
        String sql = " insert into sink_redis select * from (values ('test', 'test11'))";
        TableResult tableResult = tEnv.executeSql(sql);
        tableResult.getJobClient().get()
                .getJobExecutionResult()
                .get();
  • 2.DataStream方式

    示例代码路径:
    src/test/java/org.apache.flink.streaming.connectors.redis.datastream.DataStreamInsertTest.java

    hset示例,相当于redis命令:hset tom math 150
        Configuration configuration = new Configuration();
        configuration.setString(RedisOptions.KEY_COLUMN, "name");
        configuration.setString(RedisOptions.FIELD_COLUMN, "subject"); //对应hash的field、 sorted set的score
        configuration.setString(RedisOptions.VALUE_COLUMN, "score");
        configuration.setString(REDIS_MODE, REDIS_CLUSTER);
        configuration.setString(REDIS_COMMAND, RedisCommand.HSET.name());

        RedisMapper redisMapper = RedisHandlerServices
                .findRedisHandler(RedisMapperHandler.class, configuration.toMap())
                .createRedisMapper(configuration);

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        GenericRowData genericRowData = new GenericRowData(3);
        genericRowData.setField(0, "tom");
        genericRowData.setField(1, "math");
        genericRowData.setField(2, "150");
        DataStream<GenericRowData> dataStream = env.fromElements(genericRowData);

        TableSchema tableSchema =  new TableSchema.Builder() .field("name", DataTypes.STRING().notNull()).field("subject", DataTypes.STRING()).field("score", DataTypes.INT()).build();

        FlinkJedisConfigBase conf = getLocalRedisClusterConfig();
        RedisSink redisSink = new RedisSink<>(conf, redisMapper, tableSchema);

        dataStream.addSink(redisSink);
        env.execute("RedisSinkTest");

相关文章

  • flink1.12 sql向redis实时写数据

    插件名称:flink-connector-redis 插件地址:https://github.com/jeff-z...

  • Redis 数据库安装与修改配置

    Redis 数据库 NoSQL not only sql 不仅仅是sql Redis的最大特点:存储格式key -...

  • nosql

    nosql(not only sql) 数据库 mongodb redis

  • Redis在windows安装启动

    Redis在windows安装启动。简介一 Redis属于NoSQL,与SQL区别 适用场景不同:sql数据库适合...

  • redis学习

    1:什么是redis redis是一个nosql(not only sql不仅仅只有sql)数据库.翻译成中文叫做...

  • 2018-05-28

    1. 什么是redis redis是一个nosql(not only sql不仅仅只有sql)数据库.翻译成中文叫...

  • 缓存的数据与数据库数据一致性的方案

    方式1:数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求...

  • redis-入门

    redis简介 redis是一款开源的高性能的非关系型数据库(NoSQL, Not only sql) redis...

  • Redis的基本概念和安装步骤

    一、Redis的概念 Redis是一个NoSql的数据库,不使用sql语句实现数据的CRUD,而且数据保存到内存中...

  • redis高可用

    1.有备无患-主从 redis单副本 Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,...

网友评论

      本文标题:flink1.12 sql向redis实时写数据

      本文链接:https://www.haomeiwen.com/subject/ujgoultx.html