前期准备好kafka环境,我这里是1.12.0版本的Flink,Kafka对应版本官方推荐2.4.1,Scala版本2.12,demo里用的是socket文本流做数据源
- 在kafka目录下启动zookeeper(我这里用的是kafka自带的)
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
- 启动kafka
./bin/kafka-server-start.sh -daemon config/server.properties
- 开启socket文本流
nc -lk 9999
- 消费kafka指定topic消息,确认数据是否正常
./bin/kafka-console-consumer.sh --bootstrap-server IP:9092 --topic test
- 别忘了添加Kafka连接器依赖
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.12</artifactId>
<version>1.12.0</version>
</dependency>
- 上代码
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer
object KafkaSink {
def main(args: Array[String]): Unit = {
// 创建流处理环境
val env = StreamExecutionEnvironment.getExecutionEnvironment
// 接收socket 文本流
val textDstream: DataStream[String] = env.socketTextStream("开启socket服务器的IP", 9999)
textDstream.addSink(new FlinkKafkaProducer[String]("KafkaIP:9092", "test", new SimpleStringSchema()))
// 启动executor,执行任务
env.execute("Kafka sink")
}
}
- 在开启的socket服务中输入测试数据,查看已开启的Kafka消费者窗口是否有测试数据过来
喜欢的小伙伴留下你的足迹吧~~~