Flink自定义DataSource之MysqlSource

本文介绍了如何在Flink中自定义DataSource,以MysqlSource为例,详细讲解了从添加maven依赖、创建Student实体类、进行JDBC连通测试,到编写自定义的StudentSourceFromMysql类以及Flink程序入口代码的全过程。通过这个例子,展示了如何利用RichSourceFunction读取MySQL数据库中的数据。

很久没更新博客了,最近两周先后准备了两个比赛,还好,结果都不错,继续加油。回归正常的Flink学习之路。

在Flink使用中经常需要自定义DataSource,以满足实际业务需求。Flink Source原生支持包括Kafka、RabbitMQ等一些常用的消息队列组件或者类似ES这样基于文本索引的高性能非关系型数据库,而对于写入关系型数据库或Flink不支持的组件中,需要借助RichSourceFunction去实现,但这部分性能是比原生的差些,虽然Flink不建议这么做,但在大数据处理过程中,由于业务或技术架构的复杂性,有些特定的场景还是需要这样做,本篇文章从实现一个自定义source—MysqlSource来认识RichSourceFunction,读取mysql中flinktest数据库中的数据。表很简单,就省略建表的过程,测试数据如下:

一、maven依赖

我们需要引入以下几个依赖:Flink基础包、flink-java包、flink-Streaming包、mysql-jdbc包,因为我们本次使用的程序语言是java,因此不需要导入scala相关的包进来。

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>1.7.2</version>
            <!--编译时使用,运行时并不使用,所以本地测试需要注释掉-->
            <!--<scope>provided</scope>-->
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.11</artifactId>
            <version>1.7.2</version>
            <!--<scope>provided</scope>-->
        </dependency>
    </dependencies>

二、Student实体类

用javabean的形式来保存数据库中的字段,这样的做的好处是: 继承时直接写RichSourceFunction<Student>即可,不定义实体类,我们需要用Tuple来代替,比我我们这里有四个字段,继

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值