使用flink向redis集群sink数据

    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        DataStreamSource<Event> stream = env.addSource(new ClickSource());
        HashSet<InetSocketAddress> addresses = new HashSet<>();
        addresses.add(new InetSocketAddress(HOST_NAME,6380)); // 这里一定要是hostname,不是IP!!!
        addresses.add(new InetSocketAddress(HOST_NAME,6381));
        addresses.add(new InetSocketAddress(HOST_NAME,6382));

        FlinkJedisClusterConfig config = new FlinkJedisClusterConfig.Builder()
                .setNodes(addresses)
                .build();
                
        // 写入redis
        stream.addSink(new RedisSink<>(config, new MyRedisMapper()));
        env.execute();
    }
    // 自定义类实现RedisMapper接口
    public static class MyRedisMapper implements RedisMapper<Event>{

        @Override
        public RedisCommandDescription getCommandDescription() {
            return new RedisCommandDescription(RedisCommand.HSET, "clicks");
        }

        @Override
        public String getKeyFromData(Event event) {
            return event.user;
        }

        @Override
        public String getValueFromData(Event event) {
            return event.url;
        }
    }

需要注意的是,连接redis的时候,写的一定是hostname,而不是IP地址!!!
FlinkJedisClusterConfig这个类是不支持setPassword,所以搭建redis集群的时候最好不要设置密码。也可以重写这个类,手动支持setPassword,网上有资料,这里不多赘述。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值