[flink-014]Sink和ES6的ElasticsearchSink

本文深入探讨Flink如何通过SinkFunction将数据高效存储至Elasticsearch,涵盖ElasticsearchSinkBase类的关键功能,如批量存储、错误处理策略及savepoint机制,为大数据实时处理场景提供技术指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sink,水池。Flink的计算结果,最终传给Sink落地存储。

Sink支持多种存储系统,包括数据库和消息队列,比如JDBC、Kaffka、Elasticsearch、Hbase....

从源头说起。

接口Function,位于Function.java,空接口,是所有用户自定义函数的根接口。

接口SinkFunction,继承Function,是所有用户自定义Sink函数的顶层接口。它定义invoke函数,把传入的数据写入到存储系统。它定义了子接口Context,Context返回处理时间和水印。

接口RichFunction,继承Function,是所有用户自定义Rich函数的顶层接口。它定义open, close, 获取运行上下文环境,迭代器等。

抽象类AbstractRichFunction,实现RichFunction,提供RichFunction的具体实现。

抽象类RichSinkFunction继承AbstarcRichFunction,什么都没做。

抽象类ElasticsearchSinkBase继承RichSinkFunction。Elasticsearch有多个版本,ElasticsearchSinkBase是所有Elasticsearch的Sink的基类。

ElasticsearchSinkBase的关键功能是,连接到Elasticsearch服务,以bulk方式存储数据。open函数创建clinet,创建bulk处理器,创建indexer。invoke函数,触发存储。

涉及到如下问题:

1.用Elasticsearch6ApiCallBridge连接Elasticsearch

2.BulkProcessor存储数据

3.设置存储数据的bulk操作失败的处理策略,也就是BulkFlushBackoffPolicy

4.Bulk存储监听,处理before bulk, after bulk。

5.savepoint处理,保存快照,从快照恢复,继续提交数据给Elasticsearch。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值