flink 批量压缩redis集群 sink

idea maven依赖

<dependency>

<groupId>org.apache.bahir</groupId>

<artifactId>flink-connector-redis_2.11</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>3.8.0</version>

</dependency>

复制代码
import org.apache.flink.configuration.Configuration
import org.apache.flink.streaming.api.functions.sink.RichSinkFunction
import org.apache.flink.streaming.api.functions.sink.SinkFunction
import redis.clients.jedis.*
import java.io.ByteArrayOutputStream
import java.util.zip.GZIPOutputStream


class RedisSink : RichSinkFunction<Data>() {
    private lateinit var jedisCluster: JedisCluster

    override fun open(parameters: Configuration) {
        super.open(parameters)
        val jedisPoolConf = JedisPoolConfig()
        jedisPoolConf.maxTotal = 128// 最大连接数
        jedisPoolConf.maxIdle = 50// 最大空闲连接数
        jedisPoolConf.testOnBorrow = true // 当调用 borrow Object方法时,是否进行有效性检查

        // 集群模式
        val nodes = HashSet<HostAndPort>()

        val hostAndPort1 = HostAndPort("h1", port)
        val hostAndPort2 = HostAndPort("h2", port)
        val hostAndPort3 = HostAndPort("h3", port)
        nodes.add(hostAndPort1)
        nodes.add(hostAndPort2)
        nodes.add(hostAndPort3)

        jedisCluster = JedisCluster(nodes, 100000, 100000, 2, "password", jedisPoolConf)
    }

    override fun invoke(value: Data, context: SinkFunction.Context<*>?) {
        val key = "data" + value.x+ value.y

 

            val outputBts = ByteArrayOutputStream()
            val gzip = GZIPOutputStream(outputBts)
            gzip.write(value.toByteArray())
            gzip.flush()
            gzip.finish()

            jedisCluster.set(key.toByteArray(), outputBts.toByteArray())
            jedisCluster.expire(key.toByteArray(),15552000)
        
    }

    override fun close() {
        super.close()
        jedisCluster.close()
    }

}
相关推荐
碳基学AI29 分钟前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习
一个天蝎座 白勺 程序猿1 小时前
大数据(4.6)Hive执行引擎选型终极指南:MapReduce/Tez/Spark性能实测×万亿级数据资源配置公式
大数据·hive·mapreduce
爱的叹息1 小时前
Spring Boot 集成Redis 的Lua脚本详解
spring boot·redis·lua
HelpHelp同学2 小时前
信息混乱难查找?三步搭建高效帮助中心解决难题
大数据·人工智能·知识库管理系统
TDengine (老段)8 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
morris1319 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
爱的叹息11 小时前
spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)
redis
weitinting12 小时前
Ali linux 通过yum安装redis
linux·redis
直裾13 小时前
Mapreduce的使用
大数据·数据库·mapreduce
纪元A梦13 小时前
Redis最佳实践——首页推荐与商品列表缓存详解
数据库·redis·缓存