当前位置:   article > 正文

[flink-014]Sink和ES6的ElasticsearchSink

elasticsearchsink

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。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/606485
推荐阅读
相关标签
  

闽ICP备14008679号