当前位置: 首页 > wzjs >正文

中国精准扶贫网站建设现状WordPress禁止下载

中国精准扶贫网站建设现状,WordPress禁止下载,0基础的怎么转行互联网,织梦dedecms医院类网站在线预约挂号插件这段代码展示了如何使用 Apache Flink 将数据流写入 MySQL 数据库,并使用了 JdbcSink 来实现自定义的 Sink 逻辑。以下是对代码的详细解析和说明:代码结构包声明:package sink定义了代码所在的包。导入依赖:导入了必要的 Flink 和…

这段代码展示了如何使用 Apache Flink 将数据流写入 MySQL 数据库,并使用了 JdbcSink 来实现自定义的 Sink 逻辑。以下是对代码的详细解析和说明:

代码结构

  • 包声明package sink
    定义了代码所在的包。

  • 导入依赖
    导入了必要的 Flink 和 JDBC 相关类库,包括:

    • java.sql.PreparedStatement:用于执行 SQL 语句。
    • org.apache.flink.connector.jdbc:Flink 的 JDBC 连接器相关类。
    • org.apache.flink.streaming.api.scala._:Flink 流处理 API。
  • sinkToMysql 对象
    主程序入口,包含 Flink 流处理逻辑和 MySQL Sink 的配置。

package sinkimport java.sql.PreparedStatementimport org.apache.flink.connector.jdbc.{JdbcConnectionOptions, JdbcSink, JdbcStatementBuilder}
import org.apache.flink.streaming.api.scala._/**** @PROJECT_NAME: flink1.13* @PACKAGE_NAME: sink* @author: 赵嘉盟-HONOR* @data: 2023-11-20 15:23* @DESCRIPTION**/
object sinkToMysql {def main(args: Array[String]): Unit = {val env = StreamExecutionEnvironment.getExecutionEnvironmentval data = env.fromElements(Event("Mary", "./home", 100L),Event("Sum", "./cart", 500L),Event("King", "./prod", 1000L),Event("King", "./root", 200L))data.addSink( JdbcSink.sink("insert into clicks values(?,?)",new JdbcStatementBuilder[Event] {override def accept(t: PreparedStatement, u: Event): Unit = {t.setString(1,u.user)t.setString(2,u.url)}},new JdbcConnectionOptions.JdbcConnectionOptionsBuilder().withUrl("jdbc:mysql://master:3306/test").withDriverName("com.jdbc.jdbc.Driver").withUsername("root").withPassword("root").build()))env.execute("sinkRedis")}
}

基于scala使用flink将读取到的数据写入到Mysql

  1. data.addSink( JdbcSink.sink(...) ):这行代码将一个JdbcSink添加到Flink的数据流中,用于将数据写入到数据库中。

  2. "insert into clicks values(?,?)":这是SQL语句,表示将用户和URL插入到名为clicks的表中。

  3. new JdbcStatementBuilder[Event] {...}:这是一个匿名内部类,用于构建PreparedStatement对象。在这个类中,我们重写了accept方法,该方法接受一个PreparedStatement对象和一个Event对象,然后将Event对象的user和url属性设置到PreparedStatement对象中。

  4. new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()...:这是一个JdbcConnectionOptionsBuilder对象,用于构建数据库连接选项。在这个对象中,我们设置了数据库的URL、驱动名称、用户名和密码。

  5. .build():这是JdbcConnectionOptionsBuilder对象的一个方法,用于构建JdbcConnectionOptions对象。

代码解析

(1) 主程序入口
def main(args: Array[String]): Unit = {val env = StreamExecutionEnvironment.getExecutionEnvironment
  • 创建 Flink 流处理环境 StreamExecutionEnvironment
(2) 定义数据流
val data = env.fromElements(Event("Mary", "./home", 100L),Event("Sum", "./cart", 500L),Event("King", "./prod", 1000L),Event("King", "./root", 200L)
)
  • 使用 fromElements 方法生成一个包含 4 个 Event 对象的流。
(3) 自定义 MySQL Sink
data.addSink(JdbcSink.sink("insert into clicks values(?,?)",new JdbcStatementBuilder[Event] {override def accept(t: PreparedStatement, u: Event): Unit = {t.setString(1, u.user)t.setString(2, u.url)}},new JdbcConnectionOptions.JdbcConnectionOptionsBuilder().withUrl("jdbc:mysql://master:3306/test").withDriverName("com.jdbc.jdbc.Driver").withUsername("root").withPassword("root").build()
))
  • 使用 JdbcSink.sink 方法将数据写入 MySQL:
    • SQL 语句insert into clicks values(?,?),插入 user 和 url 字段。
    • JdbcStatementBuilder:用于将 Event 对象映射到 SQL 语句的参数。
    • JdbcConnectionOptions:配置 MySQL 连接信息,包括 URL、驱动名称、用户名和密码。
(4) 执行任务
env.execute("sinkRedis")
  • 启动 Flink 流处理任务,任务名称为 sinkRedis

优化版本

异常处理
  • 在 Sink 中添加异常处理逻辑,避免程序因 MySQL 写入失败而崩溃:
    data.addSink(JdbcSink.sink("insert into clicks values(?,?)",new JdbcStatementBuilder[Event] {override def accept(t: PreparedStatement, u: Event): Unit = {try {t.setString(1, u.user)t.setString(2, u.url)} catch {case e: Exception => e.printStackTrace()}}},new JdbcConnectionOptions.JdbcConnectionOptionsBuilder().withUrl("jdbc:mysql://master:3306/test").withDriverName("com.mysql.cj.jdbc.Driver").withUsername("root").withPassword("root").build()
    ))
批量写入
  • 如果需要提高写入性能,可以启用批量写入功能:
    data.addSink(JdbcSink.sink("insert into clicks values(?,?)",new JdbcStatementBuilder[Event] {override def accept(t: PreparedStatement, u: Event): Unit = {t.setString(1, u.user)t.setString(2, u.url)}},new JdbcConnectionOptions.JdbcConnectionOptionsBuilder().withUrl("jdbc:mysql://master:3306/test").withDriverName("com.mysql.cj.jdbc.Driver").withUsername("root").withPassword("root").withBatchSize(1000) // 设置批量大小.build()
    ))

优化后的代码

以下是优化后的完整代码:

package sinkimport java.sql.PreparedStatement
import org.apache.flink.connector.jdbc.{JdbcConnectionOptions, JdbcSink, JdbcStatementBuilder}
import org.apache.flink.streaming.api.scala._object sinkToMysql {def main(args: Array[String]): Unit = {val env = StreamExecutionEnvironment.getExecutionEnvironmentval data = env.fromElements(Event("Mary", "./home", 100L),Event("Sum", "./cart", 500L),Event("King", "./prod", 1000L),Event("King", "./root", 200L))data.addSink(JdbcSink.sink("insert into clicks values(?,?)",new JdbcStatementBuilder[Event] {override def accept(t: PreparedStatement, u: Event): Unit = {try {t.setString(1, u.user)t.setString(2, u.url)} catch {case e: Exception => e.printStackTrace()}}},new JdbcConnectionOptions.JdbcConnectionOptionsBuilder().withUrl("jdbc:mysql://master:3306/test").withDriverName("com.mysql.cj.jdbc.Driver").withUsername("root").withPassword("root").withBatchSize(1000) // 启用批量写入.build()))env.execute("sinkToMysql")}
}
http://www.dtcms.com/wzjs/558396.html

相关文章:

  • dw网站制作模板建设银行网站支付流程
  • 天河网站建设公司排名主页网址
  • 免费建网站专业群建设专题网站
  • 青岛企业网站制作公司网站上添加图片的原则
  • 浙江杭州网站建设服务公司哪家好wordpress+添加版权
  • 网站网站的建设美食网站中饮食资讯该怎么做
  • 小程序代理商有哪些北京seo排名服务
  • 建个网站大概多少钱正规考证培训机构
  • 网站建设如何制作教程网站怎么做二维码链接地址
  • 网站怎么做footer网站网站制作开发需要哪些技术
  • 连江网站建设服务rt19 wordpress
  • wordpress 谷歌字体 360插件青岛官网优化
  • 做外贸哪个网站要办信用卡的wordpress展示页面模板下载
  • 深圳企业网站建设公司排名网站建设前置审批
  • 做网站和推广2017年做网站好难
  • 保定住房和城乡建设局网站招标信息发布
  • 网站运营与维护是什么app 网站平台建设实施方案
  • redis网站开发教程泰州企业网站建设公司
  • 如何攻克房地产网站义乌市评建设职称网站
  • 城乡建设网站证件查询系统成都旅游景点有哪些
  • 工业企业网站建设也的意义建筑公司网站设计模板
  • 茂名营销型网站制作公司照片做3d网站
  • 什么网站可以找免费模板安卓软件开发需要学什么
  • 网站功能配置福州网签
  • 迅雷黄冈网站推广软件大连html5网站建设费用
  • 百度网站建设电话免费查询公司
  • 肇庆网站开发公司网站建设项目的实训报告
  • flash网站引导页面制作哪个网站做调查赚钱多
  • 微信网站模块中国最新消息
  • 网站建设项目设计报告佛山高端网站建设工作室