文章目录
关系型数据库有着非常好的结构化数据设计、方便的 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,查看是否成功写入数据。

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

被折叠的 条评论
为什么被折叠?



