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

首先在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()})})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】在无人值守程序(服务)中调用Microsoft Graph

什么是无人值守程序&#xff08;服务&#xff09; 我在此前用了几篇文章分别介绍了在桌面应用程序&#xff08;控制台&#xff09;&#xff0c;Web应用程序&#xff08;ASP.NET MVC&#xff09;&#xff0c;以及PowerSehll脚本中如何访问Microsoft Graph&#xff0c;今天这一篇…

【转】使用PowerApps快速构建基于主题的轻业务应用 —— 入门篇

前言 在上一篇文章 基于Office 365的随需应变业务应用平台 中我提到&#xff0c;随着随需应变的业务需要&#xff0c;以及技术的发展&#xff0c;业务应用的开发的模式也有了深刻的变化。基于微软的平台&#xff0c;有服务于主干业务应用的Dynamic 365 业务应用平台&#xff0…

Spark内核源码学习(暂未学完)

1&#xff09; 回顾 1.1 Spark通用运行流程概述 在submit任务条件是需要指定executo个数&#xff0c;executor-CUP个数&#xff0c;可以提高并行度。 什么是并行&#xff0c;什么是并发&#xff1f; 并发&#xff1a;假如有多个任务task&#xff0c;并行是在一个cup中&#x…

【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇

在上一篇 使用PowerApps快速构建基于主题的轻业务应用 —— 入门篇 中&#xff0c;我用了三个实际的例子演示了如何快速开始使用PowerApps构建轻业务应用&#xff0c;你可能已经发现&#xff0c;我都是使用默认生成的设置&#xff0c;没有做任何修改。当然&#xff0c;那样做出…

Spark一些组件的定义

Driver program: 运行应用程序的main函数并创建SparkContext的进程 除了RDD的最终执行所写的业务逻辑&#xff0c;剩下的都在Driver里生成&#xff0c;Driver端执行action算子才会到开始执行所创建的DAG-RDD图。 Cluster manager&#xff1a; 用于获取集群资源外部服务 Mas…

【转】D365 FO第三方集成(二)---访问认证(获取访问令牌)

D365 FO 在github上发布了第三方访问D365 FO的示例代码&#xff0c;里面包含了各种调用示例&#xff0c;代码很清晰。https://github.com/microsoft/Dynamics-AX-Integration 这篇blog简单分析一下代码中获取访问令牌的部分代码。 与获取访问令牌相关的代码有两个类ClientConfi…

【转】D365 FO第三方集成(三)---服务实现

D365 FO的Custom Service的实现比AX2012简单了很多。 AX2012服务方法要用属性SysEntryPointAttribute标记&#xff0c;添加到Services以后&#xff0c;还要发布服务并在系统管理入站端口添加操作&#xff0c;服务运行在CIL下&#xff0c;所以每次改动服务方法的代码都要增量生成…

PHP连接sql seaver数据库

我的PHP版本7.0 通过sqlsrv系列函数&#xff0c;需要下载安装Microsoft Drivers for PHP for SQL Server驱动&#xff1a; 地址&#xff1a;https://msdn.microsoft.com/library/dn865013.aspx。 根据自己需求下载安装&#xff0c;安装地址php下ext目录下&#xff0c;我的是4.0…

NoSql理解+传统关系型数据库ACID+Nosql的CAP+BASE的理解

1&#xff09;什么是Nosql NoSQL(NoSQL Not Only SQL )&#xff0c;意即“不仅仅是SQL”&#xff0c; 泛指非关系型的数据库。随着互联网web2.0网站的兴起&#xff0c;传统的关系数据库在应付web2.0网站&#xff0c;特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显…

ztree 点击重载 layui table

ztree 点击重载 layui table <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD><TITLE> ztree_demo </TITLE><meta http…

数据结构与算法 - 稀疏数组(理解+代码实现案例)

举例 稀疏数组第一行是原数据几行几列和几个有效数据的个数 下面的行是各个有效数组的行列与具体值 稀疏数组实现 代码实现 package DataStructures.sparsearray;/*** 二维数组转稀疏数组 与 稀疏数组转成二维数组*/ public class SparseArray {public static void main(Stri…

数据结构 - 队列(非环形队列,以及优化成环形队列)

1&#xff09;队列的定义与实现形式-方式 2&#xff09;队列实现思路&#xff08;非环形&#xff0c;下面进行优化&#xff09; 3&#xff09;代码实现&#xff08;注意并不是环形&#xff09; package DataStructures.queue;import java.util.Scanner;/*** 使用数组模拟队列*…

爬取网易云音乐歌曲特色榜单信息

网易云音乐(iframe内的歌单) 刚开始学习做下记录 需要先下载好所需浏览器内核 我时谷歌&#xff0c;下载地址 http://chromedriver.storage.googleapis.com/index.html 然后没了&#xff0c;自己F12扒拉下就行了 运行&#xff1a; 左侧随便点击一个榜单后&#xff0c;复制ur…

数据结构 - 单链表(Linked List)实现在内存中实现数据以链表形式生成并根据序号排序

下面实现一个例子来进行学习 1&#xff09;介绍 单链表的逻辑结构 在内存中的实际结构 具体创建示意图&#xff1a; 2&#xff09;代码实现 例子 1。第一个程序在添加的时候并没有按照序号排序&#xff0c;如果在添加的时候把位置改变输出的时候序号会改变 package DataStr…

Mysql count() 语句

百万数据测试 select count(主键) from table 执行效率&#xff1a; select count(*) AS AGGREGATE from table 以上测试均再 navicat 工具进行 由于各种原因&#xff0c;sql执行时间可定存在一定误差&#xff0c;但最终结果不变。

phpStydy+wordpress 安装部署

1、先准备工具包 下载phpstudy&#xff0c;下载地址&#xff1a;https://www.xp.cn/ 下载wordpress &#xff0c;下载地址&#xff1a;https://cn.wordpress.org/download/ 2、安装phpStudy&#xff0c;下一步操作即可 3、安装完成后&#xff0c;检测环境配置&#xff0c;php、…

java数据结构 - 单链表(腾讯面试题实现单链表反转)

直接上实现代码 //单链表的反转public static void reverseList(HeroNode head){//如果当前链表为空&#xff0c;或只有一个节点&#xff0c;无需反转if (head.next null || head.next.next null){return ;}//定义一个辅助变量&#xff0c;帮助我们遍历HeroNode cur head.n…

数据结构 - 链表(双向链表学习)

程序里有几个注释的地方还是需要特别注意的&#xff0c;根据单链表自己的逻辑来写一遍双向链表&#xff0c;可能有几个细节处理的不到位。 package DataStructures.LinkedList;public class DoubleLinkedListDemo {public static void main(String []args){System.out.println…

【转】Mac下 如何配置虚拟机软件Parallel Desktop--超详细

Mac下 如何配置虚拟机软件Pparallel Desktop--超详细 Mac 的双系统解决方案有两种&#xff0c;一种是使用Boot Camp分区安装独立的Windows&#xff0c;一种是通过安装Parallels Desktop一类的虚拟机软件运行Windows。采用虚拟机的方式优势更明显&#xff0c;可以灵活的在两个系…

数据结构 - 链表(单向环形链表)(约瑟夫问题)

问题如下&#xff08;与分析&#xff09; 构建思路 输入一个数&#xff0c;数到这个数的小孩出圈&#xff0c;出圈顺序的思路 代码实现 根据图解&#xff0c;来一步一步实现 //根据用户输入&#xff0c;计算小孩出圈顺序/**** param startNo 表示从第几个小孩开始数数* param …