• Flink从socket读取数据sink到redis


    package com.lin.flink.stream.customPartition;
    
    import org.apache.flink.api.common.functions.MapFunction;
    import org.apache.flink.api.java.tuple.Tuple2;
    import org.apache.flink.streaming.api.datastream.DataStream;
    import org.apache.flink.streaming.api.datastream.DataStreamSource;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.streaming.connectors.redis.RedisSink;
    import org.apache.flink.streaming.connectors.redis.common.config.FlinkJedisPoolConfig;
    import org.apache.flink.streaming.connectors.redis.common.mapper.RedisCommand;
    import org.apache.flink.streaming.connectors.redis.common.mapper.RedisCommandDescription;
    import org.apache.flink.streaming.connectors.redis.common.mapper.RedisMapper;
    
    public class StreamingDemoToRedis {
        public static void main(String[] args) throws Exception{
            StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    
            DataStreamSource<String> text = env.socketTextStream("node1", 9000, "
    ");
    
            //lpsuh l_words word
    
            //对数据进行组装,把string转化为tuple2<String,String>
            DataStream<Tuple2<String, String>> l_wordsData = text.map(new MapFunction<String, Tuple2<String, String>>() {
                @Override
                public Tuple2<String, String> map(String value) throws Exception {
                    return new Tuple2<String, String>("l_words", value);
                }
            });
    
            //创建redis的配置
            FlinkJedisPoolConfig conf = new FlinkJedisPoolConfig.Builder().setHost("node1").setPort(6379).build();
    
            //创建redissink
            RedisSink<Tuple2<String, String>> redisSink = new RedisSink<Tuple2<String, String>>(conf, new MyRedisMapper());
    
            l_wordsData.addSink(redisSink);
    
            env.execute("StreamingDemoToRedis");
        }
    
        public static class MyRedisMapper implements RedisMapper<Tuple2<String, String>> {
            //表示从接收的数据中获取需要操作的redis key
            @Override
            public String getKeyFromData(Tuple2<String, String> data) {
                return data.f0;
            }
            //表示从接收的数据中获取需要操作的redis value
            @Override
            public String getValueFromData(Tuple2<String, String> data) {
                return data.f1;
            }
    
            @Override
            public RedisCommandDescription getCommandDescription() {
                return new RedisCommandDescription(RedisCommand.LPUSH);
            }
        }
    }
  • 相关阅读:
    centOS7 mini配置linux服务器(三) 配置防火墙以及IPtables切换
    Linux的常用基本命令。
    centOS7 mini配置linux服务器(二) 配置IP
    分享Git的一些个人配置
    Firefox中Vimperator插件配置
    Linux下修改键盘默认布局
    Git对于单个文件的分批提交方式的使用
    Linux安装Monaco字体
    浮点与整形在GUI下的相关思考
    2D简单图形相关算法罗列
  • 原文地址:https://www.cnblogs.com/linkmust/p/10933536.html
Copyright © 2020-2023  润新知