Flink的KafkaConnector使用简介

本文介绍了Apache Flink如何使用KafkaConnector从Kafka读取和写入数据,详细讲解了基本使用、多Topic支持、起始Offset配置、Checkpoint与offset commit模式以及自定义反序列化方式等高阶用法,确保数据处理的Exactly-Once语义。
摘要由CSDN通过智能技术生成

KafkaConnector使用方法

引言

Flink通过Kafka Connector提供从Kafka读取数据和向Kafka写入数据的功能,并通过Checkpoint机制实现了Exactly-Once的操作语义,在保证数据读取和写入准确性的同时能够查询对应的offset信息。

KafkaConsumner

基本使用篇

Flink通过KafkaConsumer从Kafka的一个(或多个)Topic中读取数据,形成数据流。
为使用Flink KafkaConnector相关的功能,需要在项目的pom.xml文件中引入:

    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka-0.8_2.11</artifactId>
        <version>1.4.2</version>
    </dependency>

Note: 如使用Kafka0.9相关依赖,可将artifactId改为:

    <artifactId>flink-connector-kafka-0.9_2.11</artifactId>

接下来通过如下代码获取从Kafka读取数据的数据流:

Properties properties = new Properties();
// Kafka broker地址,以逗号分隔
properties.setProperty("bootstrap.servers", "localhost:9092");
// Zookepper服务器地址,以逗号分隔
properties.setProperty("zookeeper.connect", "localhost:2181");
// 读取数据的Group ID
properties.setProperty("group.id", "test");
FlinkKafkaConsumer08<String> kafkaConsumer = new FlinkKafkaConsumer08<>("topic", new SimpleStringSchema(), properties);
DataStream<String> stream = env.addSource(kafkaConsumer);

其中,FlinkKafkaConsumer08的构造函数签名为:\

public FlinkKafkaConsumer08(String topic, DeserializationSchema<T> valueDeserializer, Properties props)

三个重要参数分别为:
1、读取数据的一个或多个Topic名称,多个Topic之间以逗号分隔
2、定义从kafka读取数据的反序列化方式,详见高阶使用·数据反序列化
3、包含其他相关配置参数的的Properties

具体的使用实例如下:

import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.TimeCharacteristic;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.AssignerWithPeriodicWatermarks;
imp
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值