Flink Kafka consumer的消费策略配置

val helloStream: FlinkKafkaConsumer011[String] = new FlinkKafkaConsumer011[String]("hello", valueDeserializer, kafkaProps)
// 指定消费策略
helloStream.setStartFromEarliest() // - 从最早的记录开始;
helloStream.setStartFromLatest() //- 从最新记录开始;
helloStream.setStartFromTimestamp(null); // 从指定的epoch时间戳(毫秒)开始;
helloStream.setStartFromGroupOffsets(); // 默认行为,从上次消费的偏移量进行继续消费。

import org.apache.flink.streaming.connectors.kafka.internals.KafkaTopicPartition
val specificStartOffsets = new mutable.HashMap[KafkaTopicPartition,Long]()
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 0), 23L) // 第一个分区从23L开始
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 1), 31L) // 第二个分区从31L开始
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 2), 43L) // 第三个分区从43L开始
helloStream.setStartFromSpecificOffsets(specificStartOffsets)

// Kafka支持Topic自动发现,也就是用正则的方式创建FlinkKafkaConsumer

转载于:https://www.cnblogs.com/maoxiangyi/p/10912274.html

Apache Flink 和 Apache Kafka 结合使用时,可以实现实时流处理从Kafka主题读取数据,然后将这些数据写入Redis缓存。这是一个常见的架构模式,用于提升数据处理速度和响应能力。以下是基本步骤: 1. **配置FlinkKafka连接**: 首先,在Flink项目中添加对Kafka的依赖,并配置`FlinkKafkaConsumer`来订阅指定的Kafka topic。 ```java Properties props = new Properties(); props.setProperty("bootstrap.servers", "kafka-broker-host:port"); KafkaConsumer<String, String> kafkaSource = new FlinkKafkaConsumer<>("topic-name", new SimpleStringSchema(), props); ``` 2. **创建Flink作业**: 创建一个`DataStream`实例,从Kafka消费数据,然后处理它(如过滤、转换等),最后准备将数据写入Redis。 ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> stream = env.addSource(kafkaSource) .map(new MapFunction<String, String>() { // 这里处理Kafka数据 }); ``` 3. **写入Redis**: 使用Flink提供的`RedisSink`或者第三方库(如lettuce)来将数据写入Redis。首先,需要创建一个`RedisSinkFunction`,并设置适当的序列化策略。 ```java // 假设使用JedisConnectionPool作为Redis连接 JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); RedisSink<String> redisSink = RedisSink.create() .withConnectionFactory(connectionFactory) .withKeySerializer(RedisSerializationUtil.stringToByte()) .withValueSerializer(RedisSerializationUtil.stringToByte()); stream.addSink(redisSink); ``` 4. **提交作业运行**: 最后,提交Flink作业到集群执行。 ```java env.execute("Flink Kafka to Redis Pipeline"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值