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

}
相关推荐
z***89718 分钟前
【分布式】Hadoop完全分布式的搭建(零基础)
大数据·hadoop·分布式
TDengine (老段)1 小时前
TDengine 转换函数 TO_JSON 用户手册
android·大数据·数据库·json·时序数据库·tdengine·涛思数据
rgb2gray2 小时前
增强城市数据分析:多密度区域的自适应分区框架
大数据·python·机器学习·语言模型·数据挖掘·数据分析·llm
ANYOLY2 小时前
Redis 面试题库
java·redis·面试
expect7g2 小时前
Paimon源码解读 -- PartialUpdateMerge
大数据·后端·flink
小马爱打代码2 小时前
SpringBoot + Quartz + Redis:分布式任务调度系统 - 从架构设计到企业级落地
spring boot·redis·分布式
逻极3 小时前
Redis Queue (RQ) 核心原理:轻量任务队列的设计与实践(一句话讲透核心本质)
数据库·redis·bootstrap
q***51894 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
2401_837088504 小时前
Redisson的锁重试和WatchDog机制
redis
q***31834 小时前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存