spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程
本发明涉及数据库
技术领域:
:,具体来说,涉及一种Spark并行访问MPP数据库的方法。
背景技术:
::从关系数据库读取数据,Spark可以使用DataFrame和JdbcRDD等方法。这些方法在接口上都提供一个JDBC连接串到数据库的入口(包含主机+端口号),在实现上通过JDBC连接到这一个入口节点访问数据库。从性能角度考虑,这些方法对于单机数据库来说是可以接受的;但对于MPP数据库来说不可接受。因为对于MPP数据库来说,一个表的数据可能会分布在集群的多个数据节点上,而Spark只以一个管理节点作为入口访问数据库——即使JdbcRDD方法支持按关键列的值分区,可以并发多个连接到入口节点——但整体的性能瓶颈仍是(由JDBC连接串指定的)入口节点,无法充分发挥集群多机的性能优势。以下为本发明中可能会涉及的一些关键术语:Spark:一个快速的、通用的大规模数据处理引擎。MPP:massivelyparallelprocessing,大规模并行处理技术。管理节点:分布式数据库系统中,接受客户端连接并解释SQL,将工作分配给计算节点,向客户端返回结果集。计算节点:存储和进行SQL计算的节点。针对相关技术中的问题,目前尚未提出有效的解决方案。技术实现要素:针对相关技术中的上述技术问题,本发明提出一种Spark并行访问MPP数据库的方法,Spark可以通过JDBC连接到集群的一个管理节点上,获取表数据在集群节点间的分布信息,然后通过JDBC连接到多个数据节点并行地获取表数据。为实现上述技术目的,本发明的技术方案是这样实现的:一种Spark并行访问MPP数据库的方法,包括以下步骤:S1Spark集群中的节点访问MPP数据库的入口(管理节点1),管理节点1收集表数据在MPP数据库集群中的分布信息并返回给Spark,假设数据分布在数据节点1、2和3;S2Spark先将收到的每个数据节点作为一个分区(假设为分区1、2和3),如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。假设数据节点1上关键列的值范围为[1,100000],那么将会把分区1划分为10个分区,分别查询键值为[1,10000],[10001,20000],……,[90001,100000]的数据。对其他数据节点也同样以关键列值划分多个分区。S3Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。本发明的有益效果:Spark集群利用MPP数据库中数据在节点间的分布信息,进行动态的分区划分,利用框架通用的任务分配机制把分区分配给多个Spark执行节点来访问MPP数据库的多个节点,从而充分利用两个集群的多机优势,实现对MPP数据库的高度并行访问,大大提高访问速度。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例所述的一种Spark并行访问MPP数据库的方法的流程示意图;图2是根据本发明实施例所述的一种Spark并行访问MPP数据库的方法的应用示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。如图1至2所示,根据本发明实施例所述的一种Spark并行访问MPP数据库的方法,包括以下步骤:S1Spark集群中的节点访问MPP数据库的入口(管理节点1),管理节点1收集表数据在MPP数据库集群中的分布信息并返回给Spark,假设数据分布在数据节点1、2和3;S2Spark先将收到的每个数据节点作为一个分区(假设为分区1、2和3),如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。假设数据节点1上关键列的值范围为[1,100000],那么将会把分区1划分为10个分区,分别查询键值为[1,10000],[10001,20000],……,[90001,100000]的数据。对其他数据节点也同样以关键列值划分多个分区。S3Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。在具体使用时,根据本发明所述的一种Spark并行访问MPP数据库的方法,使用Scala语言实现MppRDD,以JAR包的形式供Spark调用。以SparkSQL为例,使用之前需要先importMppRDD。具体实现代码可参考:scala>importjava.sql.DriverManagerimportjava.sql.DriverManagerscale>importorg.apache.spark.rdd.MppRDDimportorg.apache.spark.rdd.MppRDDscala>valmpprdd=newMppRDD(sc,”jdbc:kingbaseanalyticsdb://localhost:5432/kingbase”,|”com.kingbase.kingbaseanalyticsdb.Driver”,”fgao”,””,”public.t1”,””,”a”,r=>(r.getInt(1),r.getString(2)))mpprdd:org.apache.spark.rdd.MppRDD[(Int,String)]=MppRDD[7]atMppRDDat<console>:35scala>mpprdd.collect().foreach(println)(1,hahaha)(3,saprk)(2,doooop)(4,mpprdd)jdbcUrl:必选。连接数据库的JDBCURL,形如"jdbc:subprotocol://host:port/database"。jdbcDriver:必选。JDBC驱动名。user:必选。访问数据库使用的用户名。password:可选。访问数据库使用的密码。dbTable:必选。要访问的数据库名,形如[schema.]tableName。whereClause:可选。查询的过滤条件,默认查询全部数据。keyColumn:可选。关键列名。如果指定关键列,则会依据关键列的值继续细分分区。最多可指定一列。mapRow:必选。从ResultSet到期望的单行结果的映射函数。综上所述,借助于本发明的上述技术方案,Spark可以通过JDBC连接到集群的一个管理节点上,获取表数据在集群节点间的分布信息,然后通过JDBC连接到多个数据节点并行地获取表数据,大大提高访问速度。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程相关推荐
- spark集群配置以及java操作spark小demo
spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...
- 租户隔离怎么做MYSQL_一种SaaS软件租户数据隔离的方法与流程
本发明涉及计算机技术领域,尤其涉及一种SaaS软件租户数据隔离的方法. 背景技术: SaaS是Software-as-a-Service的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴 ...
- 事物日志恢复 mysql_一种基于事务日志的Mysql数据恢复方法与流程
本发明涉及一种mysql数据恢复方法,尤其涉及一种基于事务日志的mysql数据恢复方法. 背景技术: :在对mysql数据库进行日常操作的过程中,总是无法避免会产生各种误删数据,误改数据等操作.这个时 ...
- Spark集群安装介绍
(1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481 (2)spark开发环境搭建 http://aperise.iteye.com/blo ...
- Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门
目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...
- 从0到1搭建spark集群---企业集群搭建
今天分享一篇从0到1搭建Spark集群的步骤,企业中大家亦可以参照次集群搭建自己的Spark集群. 一.下载Spark安装包 可以从官网下载,本集群选择的版本是spark-1.6.0-bin-hado ...
- 基于Hadoop安装spark集群
基于Hadoop的spark环境搭建 已有环境情况 Hadoop HA Java 软件版本 Hadoop 2.7.2 Java 1.8.0_301 Scala 2.11.8 Spark 2.1.0 下 ...
- spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用
点击蓝字关注我 前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce.Spark,本文就接着上一 ...
- Spark基础(1)——搭建Spark开发环境、UI界面查看spark集群
可直接从2.Spark部署开始操作 目录 1.环境前提 1.1已经搭建好hadoop环境 1.2我的参考配置环境 2.Spark部署 2.1下载spark安装包 2.2解压spark安装包 2.2.1 ...
最新文章
- 【ABAP】通过SE30来测试程序的执行效率
- 启明云端分享|SSD20X_烧录mac地址文档参考
- LiveVideoStack线上分享第三季(十三):腾讯云LiteAVSDK演进之路
- OpenStack已死?恐怕你想多了 | 技术头条
- SQLSERVER压缩数据文件的用处有多大
- 12.Qt中字符串相关处理
- 双系统重装win7/Xp后如何恢复ubuntu引导--转载
- 5G(10)----5G 终端发展
- C#(64位系统) 解决MySQLDriverCS未能加载文件或程序集,或它的某一个依赖项
- php用户名框架,ThinkPHP框架结合Ajax实现用户名校验功能示例
- 字模提取软件怎么放大_图片无损放大软件 Topaz Gigapixel AI
- 静态初始化--我的理解
- failed to execute ‘dot‘, make sure the Graphviz executables are on your systems‘ PATH
- MATLAB实现自编码器(五)——变分自编码器(VAE)实现图像生成的帮助函数
- 数学建模【开会总结】
- word2003流程图变成图片_流程图怎么画word2003
- python空气质量等级判断_空气质量等级的判定
- C语言内部强化培训视频教程
- MySQL 中 delete where in 语句的子查询限制
- 热门编程语言那么多,该选择哪个