前面 FLink 的文章中我们已经介绍了说 Flink 已经有很多自带的 Connector。

本文详细介绍了如何使用Flink的Elasticsearch连接器,将Kafka数据读取并存储到ElasticSearch中。包括如何封装自带的Sink,扩展配置及FailureHandler的处理策略,确保数据完整性和处理线上常见问题。

https://www.cnblogs.com/Allen-rg/p/11593528.html

1、《从0到1学习Flink》—— Data Source 介绍

2、《从0到1学习Flink》—— Data Sink 介绍

其中包括了 Source 和 Sink 的,后面我也讲了下如何自定义自己的 Source 和 Sink。

那么今天要做的事情是啥呢?就是介绍一下 Flink 自带的 ElasticSearch Connector,我们今天就用他来做 Sink,将 Kafka 中的数据经过 Flink 处理后然后存储到 ElasticSearch。

准备

安装 ElasticSearch,这里就忽略,自己找我以前的文章,建议安装 ElasticSearch 6.0 版本以上的,毕竟要跟上时代的节奏。

下面就讲解一下生产环境中如何使用 Elasticsearch Sink 以及一些注意点,及其内部实现机制。

 

Elasticsearch Sink

添加依赖

1

2

3

4

5

<dependency>

    <groupId>org.apache.flink</groupId>

    <artifactId>flink-connector-elasticsearch6_${scala.binary.version}</artifactId>

    <version>${flink.version}</version>

</dependency>

  

上面这依赖版本号请自己根据使用的版本对应改变下。

下面所有的代码都没有把 import 引入到这里来,如果需要查看更详细的代码,请查看我的 GitHub 仓库地址:

https://github.com/zhisheng17/flink-learning/tree/master/flink-learning-connectors/flink-learning-connectors-es6

这个 module 含有本文的所有代码实现,当然越写到后面自己可能会做一些抽象,所以如果有代码改变很正常,请直接查看全部项目代码。

ElasticSearchSinkUtil 工具类

这个工具类是自己封装的,getEsAddresses 方法将传入的配置文件 es 地址解析出来,可以是域名方式,也可以是 ip + port 形式。

addSink 方法是利用了 Flink 自带的 ElasticsearchSink 来封装了一层,传入了一些必要的调优参数和 es 配置参数,下面文章还会再讲些其他的配置。

ElasticSearchSinkUtil.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

public class ElasticSearchSinkUtil {

 

    /**

     * es sink

     *

     * @param hosts es hosts

     * @param bulkFlushMaxActions bulk flush size

     * @param parallelism 并行数

     * @param data 数据

     * @param func

     * @param <T>

     */

    public static <T> void addSink(List<HttpHost> hosts, int bulkFlushMaxActions, int parallelism,

                                   SingleOutputStreamOperator<T> data, ElasticsearchSinkFunction<T> func) {

        ElasticsearchSink.Builder<T> esSinkBuilder = 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值