(3)Kafka整合Flink使用----使用Flink消费kafka内的数据
Kafka整合Flink使用----使用Flink消费kafka内的数据
添加依赖(代码参照kafka官网:https://kafka.apache.org/)
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_${scala.binary.version} </artifactId> <version>${flink.version}</version> </dependency>
kafka作为Flink的数据源
使用Flink消费kafka内的数据
package com.shujia.flink.kafka
import java.util.Properties
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
object Demo1KafkaSource {
def main(args: Array[String]): Unit = {
//创建flink环境
val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
val properties = new Properties()
//broler地址列表
properties.setProperty("bootstrap.servers", "master:9092,node1:9092,node2:9092")
//消费者组,同一条数据在一个组内只处理一次
properties.setProperty("group.id", "test")
//创建消费者
val flinkKakfaConsumer = new FlinkKafkaConsumer[String](
"words", //指定topic
new SimpleStringSchema(), //指定数据格式
properties //指定配置文件对象
)
flinkKakfaConsumer.setStartFromEarliest() //尽可能从最早的记录开始
//flinkKakfaConsumer.setStartFromLatest() //从最新的记录开始
//flinkKakfaConsumer.setStartFromTimestamp() //从指定的时间开始(毫秒)
//flinkKakfaConsumer.setStartFromGroupOffsets() //默认的方法, 按照消费者组读取数据,如果消费者组第一次使用,默认只读取最新的数据
//使用kafka source -- 无界流
val kafkaDS: DataStream[String] = env.addSource(flinkKakfaConsumer)
kafkaDS
.flatMap(_.split(","))
.map((_, 1))
.keyBy(_._1)
.sum(1)
.print()
env.execute()
}
}
分类:
Kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下