Flink 基础学习(五)数据存储

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

  这是 Java 极客技术的第 262 篇原创文章

1 前言

先来回顾一下 Flink 基础的三兄弟:

  • 数据来源 DataSource

  • 数据转换 Transaformation

  • 数据存储 DataSink

前面两篇笔记已经写了数据来源和转换如何使用,那么这篇当然就到了数据存储,接下来将会从以下角度介绍一下(喜闻乐见的 What / Why / How)~:

  • 1 为什么要用 Sink

  • 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)

  • Hadoop FileSystem (sink)

  • RabbitMQ (source/sink)

  • Apache NiFi (sour

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值