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 = {

}

}

相关推荐
lixia0417mul217 小时前
flink接入spring体系
java·spring·flink
Solis程序员19 小时前
解决双写不一致!Canal+Outbox+Kafka 高可靠事件驱动架构
redis·分布式·架构·kafka·canal
可乐ea1 天前
【知识获取与分享社区项目 | 项目日记第 23 天】项目梳理下篇:高并发与最终一致性复盘:Redis、Kafka、Outbox、ES 与 RAG 如何协同
java·redis·mysql·elasticsearch·缓存·ai·kafka
我是一颗柠檬1 天前
【Java项目技术亮点】Outbox事件驱动模式:解决分布式事务的终极方案
java·开发语言·分布式·后端·中间件·kafka
醉颜凉1 天前
Scala自定义Monad实战:从理论到应用的完整指南
大数据·算法·scala
那晚的她1 天前
Scala中Set集合
开发语言·后端·scala
IvanCodes1 天前
二、Scala流程控制:分支与循环
大数据·scala
Veggie261 天前
【Scala PyTorch深度学习】PyTorch On Scala系列课程 第十四章 29 PyTorch模型扩展自定义Module【AI Infra3】[PyTorch Scala硕士研一课程】
人工智能·深度学习·scala
Clf丶忆笙1 天前
搭建支持多语言开发的Quarkus环境:Java、Kotlin与Scala全栈指南
java·开发语言·云原生·kotlin·scala·quarkus
IvanCodes1 天前
四、Scala深入面向对象:类、对象与伴生关系
开发语言·后端·scala