首页 > 数据库 >Spark编程案例:针对每个分区进行数据库操作

Spark编程案例:针对每个分区进行数据库操作

时间:2023-10-26 11:07:46浏览次数:37  
标签:ps 数据库 编程 Connection Spark null 分区 conn


需求:将有多个分区的 RDD 中的数据保存到数据库

ps:针对分区进行数据库操作的话,建议使用 foreachPartition 算子,每个分区创建一个 Connection,避免一个 Connection 被多个分区使用而造成的序列化的麻烦。

def saveToMySql(it:Iterator[(String, String)]) = {
  var conn:Connection = null
  var ps:PreparedStatement = null
  try {
    conn = DriverManager.getConnection("jdbc:mysql://qujianlei/spark", "root", "Welcome_1")
    ps = conn.prepareStatement("insert into result values(?, ?)")
    
    it.foreach(x=>{
      ps.setString(1, x._1)
      ps.setString(2, x._2)
      ps.executeUpdate()
    })
    
  } catch {
    case e1:Exception => println("Some Exception Happened! " + e1.getMessage)
  } finally {
    if (ps != null) ps.close
    if (conn != null) conn.close
  }
}

调用分区的:rdd.foreachPartition(saveToMySql)


标签:ps,数据库,编程,Connection,Spark,null,分区,conn
From: https://blog.51cto.com/u_14655640/8030916

相关文章

  • Spark编程案例:创建自定义分区
    需求:根据jsp文件的名字,将各自的访问日志放入到不同的分区文件中,如下:生成的分区文件例如:part-00000文件中的内容:只包含了java.jsp的访问日志日志内容:192.168.88.1--[30/Jul/2017:12:53:43+0800]"GET/MyDemoWeb/HTTP/1.1"200259192.168.88.1--[30/Jul/2017:12:53:4......
  • 详解GuassDB数据库权限命令:GRANT和REVOKE
    本文分享自华为云社区《GuassDB数据库的GRANT&REVOKE》,作者:Gauss松鼠会小助手2。一、GaussDB的权限概述在数据库中,对象的创建者将成为该对象的所有者,具有对该对象进行查询、修改和删除等操作的权限。同时,系统管理员也拥有与所有者相同的权限。因此,如果要让其他用户能够使用......
  • [11章]技术大牛成长课,从0到1带你手写一个数据库系统
    点击下载——[11章]技术大牛成长课,从0到1带你手写一个数据库系统 提取码:y31p 这是一套一步步带着大家从0开始写一个数据库系统的视频教程,2023最新录制,提供有配套的源码资料下载!无论你是数据库内核研发、DBA、还是后端研发,能够手写一套自己的数据库系统,都是你突破技术发展瓶颈的......
  • mysql数据库笔记
    若要使用mysql,要先在项目/管理NuGet程序包中下载mysql.data才可以使用。server=127.0.0.1/localhost代表本机,端口号port默认是3306可以不写ExecuteReader——用于查询数据库。查询结果是返回MySqlDataReader对象MySqlDataReader包含sql语句执行的结果,并提供一个方法从结果中阅......
  • 数据库连接
    /*1.在src目录下,创建类(add,delete,revise,query)extendsHttpServlet2.在类里实现,protectedvoiddoPost/doGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//获取数据库连接Connectionconn=null;......
  • 数据库的基本操作2
    今日内容详细外键"""缺陷1.表的重点不清晰 可以忽略 到底是员工表还是部门表2.表中相关字段一直在重复存储 可以忽略 浪费存储空间3.表的扩展性极差,牵一发而动全身不能忽略""" 解决方式 将上述一张表拆分成两张表 emp与dep #上述三个缺陷全......
  • 02. TCP编程
    一、什么是TCP协议  TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序达到。TCP协议会通过3次握手建立可靠连接。然后需要对每个IP包进行编号,确保对方按顺序收到,如果包丢了,就自动重发。一个TCP报文来了以后,到底是交给那个......
  • Python 面向对象编程:类、对象、初始化和方法详解
    Python是一种面向对象的编程语言。在Python中,几乎所有东西都是对象,都具有其属性和方法。类似于对象构造函数或用于创建对象的“蓝图”的类。创建一个类要创建一个类,请使用关键字class:示例,创建一个名为MyClass的类,其中包含一个名为x的属性:classMyClass:x=5创建......
  • Python 面向对象编程:类、对象、初始化和方法详解
    Python是一种面向对象的编程语言。在Python中,几乎所有东西都是对象,都具有其属性和方法。类似于对象构造函数或用于创建对象的“蓝图”的类。创建一个类要创建一个类,请使用关键字class:示例,创建一个名为MyClass的类,其中包含一个名为x的属性:classMyClass:x=5创......
  • Apipost现已支持连接数据库!
    Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQLSever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB8种数据库的连接操作新建数据库连接:在「项目设置」-「公共资源维护」-「连接数据库」中配置需......