方式一 经过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