flink mysql sink_flink写入mysql的两种方式

本文介绍了两种使用Flink将数据写入MySQL的方法:一是通过JDBCOutputFormat,包括配置和处理类型问题;二是自定义RichSinkFunction,详细阐述了增强版自定义sink如何结合Flink的状态管理进行数据插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一 经过JDBCOutputFormat

在flink中没有现成的用来写入MySQL的sink,可是flink提供了一个类,JDBCOutputFormat,经过这个类,若是你提供了jdbc的driver,则能够当作sink使用。java

JDBCOutputFormat实际上是flink的batch api,但也能够用来做为stream的api使用,社区也推荐经过这种方式来进行。mysql

JDBCOutputFormat用起来很简单,只须要一个prepared statement,driver和database connection,就能够开始使用了。git

1 JDBCOutputFormat jdbcOutput =JDBCOutputFormat.buildJDBCOutputFormat()2 .setDrivername("com.mysql.jdbc.Driver")3 .setDBUrl("jdbc:mysql://localhost:1234/test?user=xxx&password=xxx")4 .setQuery(query)5 .finish();

以下的sql语句能够做为prepared statement:github

String query = "INSERT INTO public.cases (caseid, tracehash) VALUES (?, ?)";

对应的表的结构:sql

1 CREATE TABLE cases2 (3 caseid VARCHAR(255),4 tracehash VARCHAR(255)5 );

但有一点要明确,JDBCOutputFormat只能处理Row,而Row是对prepared statement的参数的一个包装类。这意味着咱们须要将流中的case转换为row,经过map就能作的。数据库

1 DataStream cases =...2

3 DataStream rows = cases.map((MapFunction) aC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值