云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战011-DataStream与MySql自定义sink和source(Java版)003
来源:互联网 发布:蓝牙单片机串口通信 编辑:程序博客网 时间:2024/05/16 09:58
四、自定义sink
1.自定义sink
package code.book.stream.customsinkandsource.jdbc.java;import org.apache.flink.configuration.Configuration;import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;public class StudentSinkToMysql extends RichSinkFunction<Student> { private Connection connection = null; private PreparedStatement ps = null; /** * 一、open()方法中建立连接,这样不用每次invoke的时候都要建立连接和释放连接。 */ @Override public void open(Configuration parameters) throws Exception { super.open(parameters); String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://qingcheng11:3306/flinktest"; String username = "root"; String password = "qingcheng"; //1.加载驱动 Class.forName(driver); //2.创建连接 connection = DriverManager.getConnection(url, username, password); String sql = "insert into Student(stuid,stuname,stuaddr,stusex)values(?,?,?,?);"; //3.获得执行语句 ps = connection.prepareStatement(sql); } /** * 二、每个元素的插入都要调用一次invoke()方法,这里主要进行插入操作 */ @Override public void invoke(Student student) throws Exception { try { //4.组装数据,执行插入操作 ps.setInt(1, student.getStuid()); ps.setString(2, student.getStuname()); ps.setString(3, student.getStuaddr()); ps.setString(4, student.getStusex()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } @Override public void close() throws Exception { super.close(); //5.关闭连接和释放资源 if (connection != null) { connection.close(); } if (ps != null) { ps.close(); } }}
2.sink测试程序
package code.book.stream.customsinkandsource.jdbc.java;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class StudentSinkToMysqlTest { public static void main(String[] args) throws Exception { //1.创建流执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //2.准备数据 DataStream<Student> students = env.fromElements( new Student(11, "zhangsan", "beijing biejing", "female"), new Student(12, "lisi", "tainjing tianjin", "male ") ); //3.将数据写入到自定义的sink中(这里是mysql) students.addSink(new StudentSinkToMysql()); //4.触发流执行 env.execute(); }}
3.sink测试效果
在mysql中能够查询到,flink写入的数据。
阅读全文
1 0
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战011-DataStream与MySql自定义sink和source(Java版)003
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战009-DataStream与MySql自定义sink和source(Java版)001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战010-DataStream与MySql自定义sink和source(Java版)002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战008-DataStream与MySql自定义sink和source(Scala版)003
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战006-DataStream与MySql自定义sink和source(Scala版)001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战007-DataStream与MySql自定义sink和source(Scala版)002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战012-Flink在流处理中常见的sink和source001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战013-Flink在流处理中常见的sink和source002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战003-Flink基于流的window操作001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战005-Flink基于流的window操作003
- 【云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战001-Flink基于流的wordcount示例001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战002-Flink基于流的wordcount示例002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战004-Flink基于流的window操作002
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战011--DateSet实用API详解011
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战003--DateSet实用API详解003
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用013-Flink在批处理中常见的sink和source001
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用014-Flink在批处理中常见的sink和source002
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战001--DateSet实用API详解001
- 全志平台写寄存器.txt
- 电脑windows一直启动
- Oracle数据库dmp文件Dos命令下导入导出
- Spring Cloud构建微服务架构—服务消费(Feign)
- 无线网络覆盖
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战011-DataStream与MySql自定义sink和source(Java版)003
- Java JDBC批处理插入数据操作
- 简单自定义Popwindow,仿支付宝微信密码输入弹出框
- 从一个表的数据拷贝到另一个表,Copy all columns from one table to another table:
- 《大话设计模式》java实现之桥接模式
- 总结领悟-----静态变量
- 使用微软的语音识别引擎Microsoft Speech API进行语音控制
- 2017中国国际纺织面料及辅料(春夏)博览会会刊(参展商名录)
- 网页上怎么输出右上角的度数和¥符号