Flink 消费Kafka 实操案例

使用 Apache Flink 消费 Kafka 数据是一个常见的流处理场景。下面是一个实操案例,演示如何配置 Flink 从 Kafka 读取数据,并进行简单的处理。

  1. 环境准备
    Kafka 集群:确保 Kafka 已经安装并运行。
    Flink 集群:确保 Flink 已经安装并运行。
    Java & Maven:确保安装了 JDK 和 Maven。
  2. 创建 Flink 项目
    使用 Maven 创建一个新的 Flink 项目:
mvn archetype:generate                                \
  -DarchetypeGroupId=org.apache.flink               \
  -DarchetypeArtifactId=flink-quickstart-java       \
  -DarchetypeVersion=1.13.0                         \
  -DgroupId=org.apache.flink                        \
  -DartifactId=flink-kafka-consumer                 \
  -Dversion=0.1                                     \
  -Dpackage=org.apache.flink.kafkaconsumer
  1. 添加依赖
    在 pom.xml 中添加 Kafka 连接器依赖:
<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka_2.12</artifactId>
        <version>1.13.0</version>
    </dependency>
    <!-- 其他依赖省略 -->
</dependencies>
  1. 编写 Flink 程序
    在 src/main/java/org/apache/flink/kafkaconsumer 目录下创建一个 Kafka 消费者类,例如 KafkaConsumerJob.java:
package org.apache.flink.kafkaconsumer;

import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.util.Collector;
import java.util.Properties;

public class KafkaConsumerJob {
    public static void main(String[] args) throws Exception {
        // 创建 Flink 流处理执行环境
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 配置 Kafka 消费者
        Properties properties = new Properties();
        properties.setProperty("bootstrap.servers", "localhost:9092");
        properties.setProperty("group.id", "flink-consumer-group");

        // 创建 Kafka 消费者
        FlinkKafkaConsumer<String> kafkaConsumer = new FlinkKafkaConsumer<>(
                "your-kafka-topic",
                new SimpleStringSchema(),
                properties);

        // 添加 Kafka 消费者为数据源
        DataStream<String> stream = env.addSource(kafkaConsumer);

        // 简单的数据处理(将输入字符串拆分为单词)
        DataStream<String> words = stream.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public void flatMap(String value, Collector<String> out) {
                for (String word : value.split(" ")) {
                    out.collect(word);
                }
            }
        });

        // 将处理后的数据打印到控制台
        words.print();

        // 启动作业
        env.execute("Flink Kafka Consumer Job");
    }
}
  1. 编译和运行
    使用 Maven 编译项目:
mvn clean package

将生成的 jar 文件提交给 Flink 集群运行:

$FLINK_HOME/bin/flink run -c org.apache.flink.kafkaconsumer.KafkaConsumerJob target/flink-kafka-consumer-0.1.jar
  1. 验证结果
    在 Kafka 中发送一些消息:
kafka-console-producer.sh --broker-list localhost:9092 --topic your-kafka-topic

在 Flink 集群的 Web UI 或终端上,可以看到 Flink 作业处理和输出的结果。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值