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()
    }

}
相关推荐
Hello.Reader几秒前
Flink Metrics 实战自定义指标、系统指标、排障观测一把梭
大数据·flink
中山六匹马8 分钟前
2026中山B2B网站建设:如何结合GEO优化提升企业竞争力
大数据·网络·人工智能
AIArchivist37 分钟前
坚守医疗本质,科技赋能未来|清华长庚肝胆AI与悦尔AI的共赢之路
大数据·人工智能·科技
AIArchivist1 小时前
牙髓干细胞微创治疗牙周炎:临床突破、患者价值、产业前景与未来展望
大数据
OpenCSG1 小时前
什么是模型管理平台?从大模型治理走向企业级OPC平台
大数据·人工智能·opencsg
sdyeswlw1 小时前
案例直击|一二三物联网 2025 三大经典项目,解锁物联赋能新场景
大数据·网络·人工智能
m0_528749001 小时前
git如何用
大数据·elasticsearch·搜索引擎
小杜的生信筆記2 小时前
生信技能技巧小知识,Linux多线程压缩/解压工具
linux·数据库·redis
忙碌5442 小时前
OpenTelemetry实战指南:构建云原生全链路可观测性体系
ios·flink·apache·iphone