【Flink】 Flink 的 Kafka Sink 的失败处理语义

835 篇文章 824 订阅 ¥99.90 ¥99.00

在这里插入图片描述

1.概述

当 Kafka Sink 遇到 Kafka 宕机或连接中断的情况时,Flink 的 Kafka Sink 会根据配置的失败处理语义来处理未发送成功的数据。Flink 提供了三种不同的失败处理语义:

  1. Fail on Error(默认选项):如果 Kafka 发送失败,Flink 会将错误抛出给上游操作符,并触发任务失败。这意味着未发送成功的数据会被丢弃。

  2. Fail on Write:如果 Kafka 发送失败,但是上游操作符已经成功处理了数据,Flink 会将错误抛出给上游操作符,并触发任务失败。这也意味着未发送成功的数据会被丢弃。

  3. Ignore:无论 Kafka 发送是否成功,Flink 将忽略发送错误,并继续处理后续数据。这种情况下,未发送成功的数据将会被丢弃,并且任务不会失败。

你可以根据具体的需求和业务场景选择合适的失败处理语义。默认情况下,Flink 会使用 Fail on Error 失败处理语义,确保数据发送的可靠性,但这可能会导致任务失败。如果你更关注任务的持续运行,而不是数据的完整性,可以选择其他的失败处理语义。

2.配置

要配置 Flink 的 Kafka Sink 的失败处理语义,你可以在创建 Kafka Sink 时使用 setLogFailuresOn

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
上百节课视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 共课程包含9个章节:Flink安装部署与快速入门、Flink处理API、Flink处理API、Flink高级API、Flink-Table与SQL、Flink-Action综合练习、Flink-高级特性和新特性、Flink多语言开发、Flink性能调优 课程目录: Flink-day01 00-[了解]-课程介绍 01-[了解]-Flink概述 02-[掌握]-Flink安装部署-local本地模式 03-[掌握]-Flink安装部署-Standalone独立集群模式 04-[掌握]-Flink安装部署-Standalone-HA高可用集群模式 05-[重点]-Flink安装部署-On-Yarn-两种提交模式 06-[重点]-Flink安装部署-On-Yarn-两种提交模式-演示 07-[了解]-Flink入门案例-前置说明 08-[掌握]-Flink入门案例-环境准备 09-[掌握]-Flink入门案例-代码实现-1-DataSet 10-[掌握]-Flink入门案例-代码实现-2-DataStream流批一体-匿名内部类版 11-[掌握]-Flink入门案例-代码实现-2-DataStream流批一体-Lambda版 12-[掌握]-Flink入门案例-代码实现-2-DataStream流批一体-On-Yarn 13-[掌握]-Flink原理初探-角色分工-执行流程-DataFlow 14-[掌握]-Flink原理初探-TaskSlot和TaskSlotSharing 15-[掌握]-Flink原理初探-执行流程图生成 Flink-day02 01-[理解]-流处理核心概念说明 02-[掌握]-Source-基于集合 03-[掌握]-Source-基于文件 04-[掌握]-Source-基于Socket 05-[掌握]-Source-自定义Source-随机生成订单数据 06-[掌握]-Source-自定义Source-实时加载MySQL数据 07-[掌握]-Source-Transformation-基本操作 08-[掌握]-Source-Transformation-合并和连接 09-[掌握]-Source-Transformation-拆分和选择 10-[掌握]-Source-Transformation-重平衡分区 11-[掌握]-Source-Transformation-其他分区 12-[掌握]-Source-Sink-基于控制台和文件 13-[掌握]-Source-Sink-自定义Sink 14-[了解]-Connectors-JDBC 15-[重点]-Connectors-Flink整合Kafka-Source 16-[重点]-Connectors-Flink整合Kafka-Sink-实时ETL 17-[了解]-Connectors-Redis Flink-day03 01-[了解]-Flink高级API-四大基石介绍 02-[了解]-Flink高级API-Window-分类和API介绍 03-[掌握]-Flink高级API-Window-基于时间的滑动和滚动窗口 04-[了解]-Flink高级API-Window-基于数量的滑动和滚动窗口 05-[了解]-Flink高级API-Window-会话窗口 06-[理解]-Flink高级API-Time-时间分类和事件时间的重要性及Watermaker的引入 07-[理解]-Flink高级API-Time-Watermaker概念详解 08-[理解]-Flink高级API-Time-Watermaker图解 09-[掌握]-Flink高级API-Time-Watermaker-代码演示 10-[了解]-Flink高级API-Time-Watermaker-代码演示-理论验证 11-[掌握]-Flink高级API-Time-Watermaker-outputTag-allowedlateness解决数据丢失 12-[了解]-Flink高级API-State-Flink中状态的自动管理 13-[了解]-Flink高级API-State-有状态计算和无状态计算 14-[了解]-Flink高级API-State-状态分类 15-[了解]-Flink高级API-State-keyState代码演示 16-[了解]-Flink高级API-State-OperatorState代码演示 Flink-day04-07等等
要自定义 FlinkKafka Sink,您可以通过实现 `org.apache.flink.streaming.connectors.kafka.KafkaSerializationSchema` 接口来实现自定义的序列化逻辑。以下是一个简单的示例: ```java import org.apache.flink.streaming.connectors.kafka.KafkaSerializationSchema; import org.apache.kafka.clients.producer.ProducerRecord; public class CustomKafkaSerializationSchema implements KafkaSerializationSchema<String> { private final String topic; public CustomKafkaSerializationSchema(String topic) { this.topic = topic; } @Override public ProducerRecord<byte[], byte[]> serialize(String element, Long timestamp) { // 将 String 类型的数据序列化为字节数组,可以根据需要进行自定义序列化逻辑 byte[] serializedValue = element.getBytes(); return new ProducerRecord<>(topic, serializedValue); } } ``` 然后,您可以在 Flink 程序中使用这个自定义的 KafkaSink,示例如下: ```java import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer; public class CustomKafkaSinkExample { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 创建数据流 DataStream<String> stream = ... // 创建自定义的 KafkaSink String topic = "your-topic"; FlinkKafkaProducer<String> kafkaSink = new FlinkKafkaProducer<>( topic, new CustomKafkaSerializationSchema(topic), properties); // 将数据流写入 Kafka stream.addSink(kafkaSink); env.execute("Custom Kafka Sink Example"); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值