自定义Flink消费和生产Kafka消息(消费时Schema、生产时Key&Value&分区)

本文介绍了如何在消费和生产Kafka数据时自定义数据格式。在消费端,通过实现KafkaDeserializationSchema接口创建CustomKafkaSchema,以适应特定的数据解析需求。而在生产端,使用KeyedSerializationSchema(在Flink 1.10已过时)或KafkaSerializationSchema来自定义消息序列化,并可动态指定目标topic。这两种方法确保了数据的正确处理和传输,同时也支持Flink的 Exactly-once 语义。

当我们在消费Kafka数据时,比较常用的是SimpleStringSchema,我个人比较喜欢用的是JSONKeyValueDeserializationSchema。上述两个API可以完成绝大多数的开发场景,但是但遇到个别的特殊场景时,我们需要自定义数据格式,此时我们就需要自定义xxSchema了,这里我们需要实现KafkaDeserializationSchema,从而来完成重定义消费时Kafka的数据格式。

以下是基本的模板,需要什么样的数据格式,只需要做简单的修改即可。

package com.demo.flink.sink;

import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.streaming.connectors.kafka.KafkaDeserializationSchema;
import org.apache.kafka.clients.consumer.ConsumerRecord;

/**
 * @author jiajingsi
 * Date 2019-04-09 14:24
 * Description
 * Version 1.0
 */
public class CustomKafkaSchema implements KafkaDeserializationSchema<ConsumerRecord<String, String>> {

    private final static String ENCODING = "UTF8";

    /**
     * Method to decide whether the element signals the end of the stream. If
     * true is returned the element won't be emitted.
     *
     * @param nextElement The element to test for the end-of-stream signal.
     *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值