flink kafka sink (scala)

将对象数据通过Gson 转为jsonString,在将数据写到kafka中,这个可以根据需要修改,比如按照\t分开也行,可以节省字段名称的空间。

这里还有一个问题,就是每来一条数据都需要new Gson 对象,有没有办法减少创建呢

我们知道job 和task之间是不能够传输序列化的对象的。

那么如果需要减少Gson的创建,可以自定义map函数,继承并实现RichMapFunction中的方法,其中open就可以只创建一次Gson。

data.map(new Gson().toJson(_))

.addSink(new FlinkKafkaProducerString("topicName", new SimpleStringSchema(), props, Optional.ofNullableFlinkKafkaPartitioner\[String](null)))

.uid("write-to-kafka")

.name("write-to-kafka")

自定义map:

private class DemoMap extends RichMapFunctionData, String {

var gson:Gson=_

override def open(parameters: Configuration): Unit = {

gson=new Gson()

}

override def map(value: Data): String = {

gson.toJson(value)

}

override def close(): Unit = {

}

}

相关推荐
江畔柳前堤12 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
想要打 Acm 的小周同学呀19 小时前
Kafka消息队列出现挤压如何解决?
分布式·kafka
用户36105886261221 小时前
Flink基础之有界与无界流详解:批流一体的底层逻辑
大数据·flink
富士康质检员张全蛋1 天前
Kafka实战 自定义分区器 几种常见的分区器
分布式·kafka
starzy19901 天前
Flink基础之Flink批流数据读取处理案例剖析:从文件到 Kafka 的完整代码
大数据·flink·kafka
starzy19902 天前
Flink基础之有状态计算架构分析:状态存在哪、何时存、如何恢复
大数据·架构·flink
数智启示录2 天前
Apache Kafka Consumer 扩到 40 个仍不提速:Partition 上限锁死有效并行度 【Kafka合集】
数据库·经验分享·分布式·缓存·面试·kafka·apache
数智启示录2 天前
Apache Kafka 幂等 Producer 的边界:Exactly-Once 到了 MySQL 为什么失效 【Kafka合集】
数据库·经验分享·分布式·mysql·面试·kafka·apache
数智启示录2 天前
Apache Kafka 不只是消息队列:日志与 Offset 分离如何让事件可重放 【Kafka合集】
经验分享·分布式·面试·kafka·apache
数智启示录2 天前
Apache Kafka 同 Key 仍会乱序:从分区 Offset 到业务可见的四道边界 【Kafka 合集】
大数据·数据库·经验分享·分布式·面试·kafka·apache