Sink到Redis

依赖

<!-- redis connector -->
<dependency>
    <groupId>org.apache.bahir</groupId>
    <artifactId>flink-connector-redis_2.11</artifactId>
    <version>1.0</version>
</dependency>

代码实现

object SinkRedis {

  private val REDIS_KEY = "person_message"

  def main(args: Array[String]): Unit = {
    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

    val personStreaming: DataStream[Person] = env.fromElements(Person("jim", 19, "male"),
      Person("lucy", 20, "womale"), Person("lily", 21, "womale"))

    val redisConf: FlinkJedisPoolConfig = new FlinkJedisPoolConfig.Builder()
      .setHost("localhost")
      .setPort(6379).setTimeout(30000).build()

    personStreaming.addSink(new RedisSink[Person](redisConf, new MyRedisMapper))

    env.execute("sink redis")
  }

  case class Person(name: String, age: Int, gender: String)

  class MyRedisMapper extends RedisMapper[Person] {
    override def getCommandDescription: RedisCommandDescription = {
      new RedisCommandDescription(RedisCommand.HSET, REDIS_KEY)
    }

    override def getKeyFromData(t: Person): String = {
      t.name
    }

    override def getValueFromData(t: Person): String = {
      t.age + ":" + t.gender
    }
  }

}

 

posted on 2022-05-23 22:11  溪水静幽  阅读(35)  评论(0)    收藏  举报