首先在maven中加入配置
            <!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.27</version></dependency>
然后在idea配置数据库

1) 查询

      //1.查询数据//创建jdbcRDD,访问数据库val sql = "select name,age from rdd where id >= ? and id <= ?"//有个分区的概念val jdbcRDD = new JdbcRDD(sc,() => {//获取数据库连接对象Class.forName(driver)java.sql.DriverManager.getConnection(url, userName, passWd)},sql,1,3,2,(rs)=>{println(rs.getString(1)+","+rs.getInt(2))})jdbcRDD.collect   //这里是行动算子

2.插入(优化前)

    //结果:(发现顺序并不是插入的输入,因为分给的executor不同,但是mysql是无序的,所以并没有关系)//3 ss  40//2   lisi    30//1   zhangsan    20dataRDD.foreach{case (id,username ,age) =>{//连接对象Class.forName(driver)val connection:Connection = java.sql.DriverManager.getConnection(url, userName, passWd)val sql = "insert into rdd(id,name,age) values (?,?,?)"val statement = connection.prepareStatement(sql)statement.setInt(1,id)statement.setString(2,username)statement.setInt(3,age)statement.executeUpdate()statement.close()connection.close()}}

观察上面代码会发现,每插入一天数据都会创建一个连接对象,会导致性能很差,数据太大会导致mysql崩溃,需要进行优化

使用foreachPartition对每个分区集合做操作
//3.保存数据(优化)//foreachPartition对每个分区集合做操作dataRDD.foreachPartition(datas =>{//data是一个集合不涉及网络交互//连接对象(把连接对象创建在这里,是以每个区为单位,多少个区就会创建多少个连接对象,相对来说效率高很多)//缺点:会出现oom(内存溢出 out of mana)(还没执行完数据就进来会出现内存溢出)Class.forName(driver)val connection:Connection = java.sql.DriverManager.getConnection(url, userName, passWd)datas.foreach({case (id,name,age) => {val sql = "insert into rdd(id,name,age) values (?,?,?)"val statement = connection.prepareStatement(sql)statement.setInt(1,id)statement.setString(2,name)statement.setInt(3,age)statement.executeUpdate()statement.close()}connection.close()})})

Spark(idea)操作mysql进行查询和插入 (代码+理解)相关推荐

  1. python 操作mysql数据库查询数据

    在Windows平台上安装mysql模块用于Python开发 用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1. ...

  2. MySql将查询结果插入到另外一张表

    标准SQL中INSERT语句允许将SELECT语句查询出来的数据插入到另一个表中,即可快速地从一个或多个表中向一个表中插入多个行.这样,可以方便不同表之间进行数据交换. 基本的语法格式如下: INSE ...

  3. mysql分组查询后插入新表,MySQL获取分组后的TOP 1和TOP N记录

    有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过 ...

  4. hibernate mysql 模糊查询_服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到...

    用hibernate做模糊查询,页面传递参数也处理了乱码 @Action(value="searchNameByad") public String searchNameByad( ...

  5. python3操作MySQL:查询

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个对象 fetch ...

  6. shell mysql t e_shell操作mysql 将查询结果导出

    今天有一需求,是将全国每市的参赛人数前5名的学校导出为excel.可能有经验的DBA完全可以用SQL把这需求给done了.可是因为省,市字段的中文名存储在另一个服务器的数据库上,加上也懒得去拼这么复杂 ...

  7. Python操作mysql数据库查询操作时提示“unread-result-found”

    原因描述: 当Windows操作系统损坏时,会出现"unread-result-found"错误,比如启动程序将会变慢,响应时间将会延迟.当运行多个应用程序时,可能会遇到崩溃和死机 ...

  8. mysql在查询结果中添加数据_MySQL将查询结果插入到数据表中

    转自Mysql教程:http://www.baike369.com/content/?id=5582 MySQL将查询结果插入到数据表中 INSERT语句还可以将SELECT语句查询出来的数据插入到另 ...

  9. Python通过ORM方式操作MySQL数据库

    文章目录 ORM方式 一.Python操作MySql 1.1 读取数据 1.2 插入数据 1.3 条件查询 1.3.1 查询所有 1.3.2 查询个别 1.3.3 limit().all().one( ...

最新文章

  1. python程序设计教材浅显易懂_这些python自学技巧,你不会?
  2. grep+awk+sort+wc实战
  3. centos下部署tomcat详解
  4. 白话算法(6) 散列表(Hash Table)从理论到实用(中)
  5. 响应式编程 函数式编程_函数式编程的基本原理简介
  6. (22)npm scripts 实践—构建样式文件
  7. python 编译成exe黑屏_python''外星人入侵''打包成exe遇到的问题和解决办法,闪退,黑屏。...
  8. 加拿大女王大学计算机排名,加拿大女王大学排名世界排名是第几
  9. windows服务器虚拟桌面,基于windows server 2012 的微软桌面虚拟化实战教程
  10. mysql的exe文件怎么打开_exe是什么文件格式?exe文件怎么打开?
  11. FineBI 无法将聚合和非聚合参数混用(或条件求和)
  12. 牛客java选择题每日打卡Day9
  13. 视图中的调用者权限控制bequeath current_user
  14. SQL AlawaysOn 之一:安装域控制器
  15. 如何分类保存下载京东商城无官方水印商品主图
  16. vite alias配置路径地址别名
  17. 51单片机节日彩灯控制c语言,采用AT89C51单片机设计的可编程彩灯控制
  18. 【Anaconda安装与使用】
  19. 《从0开始学微服务》模块一:入门微服务的学习笔记
  20. 帝国CMS安装问题及心得

热门文章

  1. .net Reflection(反射)- 二
  2. 将自己的女朋友的话和视频做为启动音乐和启动动画(XP)
  3. [CTF][Web][PHP][JavaScript]弱类型问题
  4. [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]
  5. 力扣 两数相加 指针操作注意事项
  6. keeplive linux平台下,Linux下搭建keepalive+nginx
  7. threejs- z-fighting 问题
  8. h5 storage事件监听
  9. webpaper网页出题语言
  10. MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)