云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战008-DataStream与MySql自定义sink和source(Scala版)003
来源:互联网 发布:数据加密 编辑:程序博客网 时间:2024/06/05 14:09
四、自定义sink
1.自定义sink
package code.book.stream.customsinkandsource.jdbc.scalaimport java.sql.{Connection, DriverManager, PreparedStatement}import org.apache.flink.configuration.Configurationimport org.apache.flink.streaming.api.functions.sink.RichSinkFunctionclass StudentSinkToMysql extends RichSinkFunction[Student] { private var connection: Connection = null private var ps: PreparedStatement = null /** * 一、open()方法中建立连接,这样不用每次invoke的时候都要建立连接和释放连接。 */ override def open(parameters: Configuration): Unit = { super.open(parameters) val driver = "com.mysql.jdbc.Driver" val url = "jdbc:mysql://qingcheng11:3306/flinktest" val username = "root" val password = "qingcheng" //1.加载驱动 Class.forName(driver) //2.创建连接 connection = DriverManager.getConnection(url, username, password) val sql = "insert into Student(stuid,stuname,stuaddr,stusex)values(?,?,?,?);" //3.获得执行语句 ps = connection.prepareStatement(sql) } /** * 二、每个元素的插入都要调用一次invoke()方法,这里主要进行插入操作 */ override def invoke(stu: Student): Unit = { try { //4.组装数据,执行插入操作 ps.setInt(1, stu.stuid) ps.setString(2, stu.stuname) ps.setString(3, stu.stuaddr) ps.setString(4, stu.stusex) ps.executeUpdate() } catch { case e: Exception => println(e.getMessage) } } /** * 三、 程序执行完毕就可以进行,关闭连接和释放资源的动作了 */ override def close(): Unit = { super.close() //5.关闭连接和释放资源 if (connection != null) { connection.close() } if (ps != null) { ps.close() } }}
2.sink测试程序
package code.book.stream.customsinkandsource.jdbc.scalaimport org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, _}object StudentSinkToMysqlTest { def main(args: Array[String]): Unit = { //1.创建流执行环境 val env = StreamExecutionEnvironment.getExecutionEnvironment //2.准备数据 val dataStream:DataStream[Student] = env.fromElements( Student(5, "dahua", "beijing biejing", "female"), Student(6, "daming", "tainjing tianjin", "male "), Student(7, "daqiang ", "shanghai shanghai", "female") ) //3.将数据写入到自定义的sink中(这里是mysql) dataStream.addSink(new StudentSinkToMysql) //4.触发流执行 env.execute() }}
3.sink测试效果
在mysql中能够查询到,flink写入的数据。
阅读全文
1 0
- 云星数据---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详解与编程实战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详解与编程实战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详解与编程实战008--DateSet实用API详解008
- 【云星数据---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
- 27 个机器学习、数学、Python 速查表
- 前端框架-11-jQuery文档&对象
- graphviz安装配置
- bash中 2>&1 & 的解释
- spring-bootr整合mybatis
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战008-DataStream与MySql自定义sink和source(Scala版)003
- Spring Cloud构建微服务架构-服务消费(Ribbon)
- sdutoj-4078 女装大佬买地题解
- 初识OPENWRT:uci介绍与命令行运用
- 基于Struts2和hibernate的WebSocket聊天室的实现教程三:Hibernate个人信息管理
- 怎样知道Linux kernel每一个历史版本的主要变化
- Android实现点击两次返回键退出
- MT6735[CTS Verifier][Test Method] Battery Saving Mode Test
- emacs python ubuntu16.04 过程