当前位置:网站首页>Flink's sink: a preliminary study
Flink's sink: a preliminary study
2020-11-08 16:12:00 【Programmer Xinchen】
Welcome to visit mine GitHub
https://github.com/zq2599/blog_demos
Content : All original articles classified summary and supporting source code , involve Java、Docker、Kubernetes、DevOPS etc. ;
About sink
The following figure comes from Flink official , In the red box is sink, Visible real-time data from Source Start at , stay Transformation After the business logic is completed in sink end , therefore sink It can be used to process the calculation results , For example, console output or save database : 
About 《Flink Of sink actual combat 》 Series articles
This article is about 《Flink Of sink actual combat 》 The first chapter of , In order to have a preliminary understanding of sink, Through the basic API and addSink Method analysis and research , Lay a good foundation for the subsequent coding practice ;
Full series Links
- 《Flink Of sink One of the real battles : On 》
- 《Flink Of sink The second part of the actual battle :kafka》
- 《Flink Of sink The third part of the actual battle :cassandra3》
- 《Flink Of sink The fourth part of the actual battle : Customize 》
Start with an instance code
- Here is a simple flink Application code , The red box print The way is sink operation :

- Here's the official sink The way , All are DataStream Class API, It can be directly called sink, Just in the code print It's one of them :

- Let's look at the picture above API Source code , First look at print Method , stay DataStream.java in , as follows , It's actually called addSink Method , Participation is PrintSinkFunction:

- The other is often used API yes writeAsText, Source code is as follows , Called writeUsingOutputFormat Method :

- track <font color="blue">writeUsingOutputFormat</font> Discovery is also called addSink, Participation is <font color="blue">OutputFormatSinkFunction</font>:

- print and writeAsText Behind the call addSink, So another common <font color="blue">writeAsCsv</font> Methods? ? It's a call addSink? Open it and see , and writeAsText Same call <font color="blue">writeUsingOutputFormat</font>, In this method, you are calling addSink:

- in summary ,data sink The key is <font color="blue">addSink</font> Input , namely <font color="blue">SinkFunction</font> Interface implementation , Use class diagrams to visualize common sink How is ability realized :
8. From the figure above, we can see the abstract class <font color="blue">RichSinkFunction</font> With all kinds of sink Ability is closely related , We should focus on it , Show method signature on class diagram , Here's the picture :
9. As shown in the figure above ,<font color="blue">RichSinkFunction</font> There is no content in itself , But it does <font color="blue">SinkFunction</font>, Inherit <font color="blue">AbstractRichFunction</font>, yes <font color="blue">RichFunction</font> and <font color="blue">SinkFunction</font> The combination of these two characteristics ; 10. <font color="blue">RichFunction</font> The characteristics of are in front of 《Flink Of DataSource Trilogy 》 We already know , It's about resources open and close; 11. <font color="blue">SinkFunction</font> The characteristics of ? It's obviously used to process the calculation results , The class diagram shows two invoke Method , Take a look at the official <font color="blue">PrintSinkFunction.java</font>:
12. <font color="blue">writer.write(record)</font> The source code is PrintSinkOutputWriter.java, As shown below : 
Summary
thus , We're right Flink Of sink With a basic understanding :
- Be responsible for the processing of real-time calculation results ( Like output or persistence );
- The main implementation is to call DataStream.addSink Method ;
- Various sink The realization of ability , The main way is to achieve addSink The interface defined by the input parameter of the method ;
Later chapters , Together with sink Let's practice the coding of the aspect , The direction of actual combat : Experience the official sink Ability , Customize sink Ability to achieve ;
Welcome to the official account : Xinchen, programmer
WeChat search 「 Xinchen, programmer 」, I'm Xinchen , Looking forward to traveling with you Java The world ... https://github.com/zq2599/blog_demos
版权声明
本文为[Programmer Xinchen]所创,转载请带上原文链接,感谢
边栏推荐
- 总结: 10月海外DeFi新项目,更多资管策略来了!
- 关于adb连接手机offline的问题解决
- Improvement of rate limit for laravel8 update
- 2020-11-05
- How to cooperate with people in software development? |Daily anecdotes
- Summary of template engine
- What is SVG?
- 一分钟全面看懂forsage智能合约全球共享以太坊矩阵计划
- 金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0
- Gopherchina 2020 Conference
猜你喜欢

阿里云加速增长,进一步巩固领先优势

Returning to the third place in the world, what did Xiaomi do right?

The network adapter could not establish the connection

总结: 10月海外DeFi新项目,更多资管策略来了!

read文件一个字节实际会发生多大的磁盘IO?

Travel notes of Suzhou
![[开源] .Net 使用 ORM 访问 华为GaussDB数据库](/img/f8/50715c25a9d49b010cba2ff442c04e.jpg)
[开源] .Net 使用 ORM 访问 华为GaussDB数据库

模板引擎的整理归纳

阿里云视频云技术专家 LVS 演讲全文:《“云端一体”的智能媒体生产制作演进之路》

Essential for back-end programmers: distributed transaction Basics
随机推荐
Mac环境安装Composer
read文件一个字节实际会发生多大的磁盘IO?
How to solve the conflict when JD landed on Devops platform?
Do these mistakes in your resume affect your annual salary of one million?
How does Alibaba cloud's maxcompute add (original ODPs) work?
基于阿里云日志服务快速打造简版业务监控看板
Summary of rendering of water wave and caustics (etching) in webgl
Golang ICMP协议探测存活主机
Flink from introduction to Zhenxiang (7. Sink data output file)
重返全球第三,小米做对了什么?
阿里云的MaxCompute数加(原ODPS)用的怎样?
awk实现类sql的join操作
How to solve the difference between NAT IP and port IP
框架-SPI四种模式+通用设备驱动实现-源码
谷歌开源能翻译101种语言的AI模型,只比Facebook多一种
RabbitMQ之Helloworld
新型存算一体芯片诞生,利好人工智能应用~
总结: 10月海外DeFi新项目,更多资管策略来了!
What is the database paradigm
laravel8更新之维护模式改进