
这是 Java 极客技术的第 262 篇原创文章
1 前言
先来回顾一下 Flink 基础的三兄弟:
数据来源
DataSource数据转换
Transaformation数据存储
DataSink
前面两篇笔记已经写了数据来源和转换如何使用,那么这篇当然就到了数据存储,接下来将会从以下角度介绍一下(喜闻乐见的 What / Why / How)~:
1 为什么要用
Sink2
DataSink是什么3 如何使用(进阶使用,滑动时间窗口例子)
2 为什么要用 DataSink
在处理数据的最后一步,一般要进行验证和之后统计,如果没有将计算结果存储下来,后面的操作也很难展开,所以结果的存储或者更新就显得很必要。
3 DataSink 是什么
Flink 基础操作与一个处理数据 Http接口的生命周期很像,接受数据 -> 处理数据 -> 存储数据,而 Sink 在翻译有表示【下沉】的意思,也就是我们经常对处理数据后做的一件事:存储。
下面来看下 RickSinkFunction 类的继承体系图:

个人觉得跟数据源 RichSourceFunction 很像,都继承了 AbstractRichFunction 抽象类,实现了 RichFunction 中的 open 和 close 等基础方法。两者的区别在于,数据源 DataSource 另外实现的是 SourceFunction 接口,而我们本篇文章的主角 DataSink 实现的就是 SinkFunction 接口。
4 官方支持的连接器 Connector
在流式计算框架 Flink 中,可以通过 Sink 进行存储操作。官方给出更推荐的说法是连接器 Connector, 第三方中间件作为连接器,既可以当成数据源,也能当成目的地,取决于上面提到实现的接口(SourceFunction/SinkFunction)
以下是官方支持的连接器,感兴趣的可以点击参考资料三去详细了解~
Apache Kafka (source/sink)
Apache Cassandra (sink)
Amazon Kinesis Streams (source/sink)
Elasticsearch (sink)

本文介绍了Flink中的DataSink,讲解了为什么使用DataSink,以及DataSink的作用。文中详细阐述了官方支持的连接器如Apache Kafka、Cassandra等,并以PrintSinkFunction为例说明了如何验证计算结果。此外,文章通过一个实例展示了如何自定义SinkFunction将数据存储到MySQL,包括流程图、输入输出示例以及具体代码实现。最后讨论了单次操作和聚合操作的区别,推荐使用聚合操作以提高数据库性能。
最低0.47元/天 解锁文章
803

被折叠的 条评论
为什么被折叠?



