(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()
  }
}
posted @   阿伟宝座  阅读(1383)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示