Flink DataStream API (十四)Flink 输出到 MySQL(JDBC)

本文详细介绍了如何使用Apache Flink将数据写入MySQL数据库。首先,通过添加必要的依赖来准备环境,接着在MySQL中创建数据库和表。然后,展示了如何编写Java代码实现从Flink数据流到MySQL的写入操作。最后,运行代码并验证数据是否成功写入MySQL。此教程适合了解Flink和MySQL集成的开发者。
摘要由CSDN通过智能技术生成

文章目录

关系型数据库有着非常好的结构化数据设计、方便的 SQL 查询,是很多企业中业务数据存储的主要形式。MySQL 就是其中的典型代表。尽管在大数据处理中直接与 MySQL 交互的场景不多,但最终处理的计算结果是要给外部应用消费使用的,而外部应用读取的数据存储往往就是 MySQL。所以我们也需要知道如何将数据输出到 MySQL 这样的传统数据库。

写入数据的 MySQL 的测试步骤如下。
(1)添加依赖

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-jdbc_${scala.binary.version}</artifactId>
    <version>${flink.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

(2)启动 MySQL,在 database 库下建表 clicks

create database flink;

use flink;

create table clicks(
user varchar(20) not null ,
url varchar(100) not null);

脚本:创建数据库和表的脚本

(3)编写输出到 MySQL 的示例代码

public class SinkToMySQL {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        // 读取数据源,并行度为 1
        DataStreamSource<Event> stream = env.fromElements(
                new Event("Mary", "./home", 1000L),
                new Event("Bob", "./cart", 2000L),
                new Event("Alice", "./prod?id=100", 3000L),
                new Event("Bob", "./prod?id=1", 3300L),
                new Event("Bob", "./home", 3500L),
                new Event("Alice", "./prod?id=200", 3200L),
                new Event("Bob", "./prod?id=2", 3800L),
                new Event("Bob", "./prod?id=3", 4200L)
        );

        String sql = "INSERT INTO clicks (user,url) VALUE (?,?)";

        //将数据写入到MySQL中
        stream.addSink(JdbcSink.sink(
                sql,
                ((statement, event) -> {
                    statement.setString(1, event.user);
                    statement.setString(2, event.url);
                }),
                new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
                        .withDriverName("com.mysql.jdbc.Driver")
                        .withUrl("jdbc:mysql://hadoop102:3306/flink")
                        .withUsername("root")
                        .withPassword("000000")
                        .build()
        ));

        env.execute();
    }
}

源代码:Flink 输出到 MySQL

(4)运行代码,用客户端连接 MySQL,查看是否成功写入数据。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值