本发明涉及数据库

技术领域:

:,具体来说,涉及一种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&nbsp2&nbsp3&nbsp当前第1页1&nbsp2&nbsp3&nbsp

spark集群访问mysql_一种Spark并行访问MPP数据库的方法与流程相关推荐

  1. 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 ...

  2. 租户隔离怎么做MYSQL_一种SaaS软件租户数据隔离的方法与流程

    本发明涉及计算机技术领域,尤其涉及一种SaaS软件租户数据隔离的方法. 背景技术: SaaS是Software-as-a-Service的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴 ...

  3. 事物日志恢复 mysql_一种基于事务日志的Mysql数据恢复方法与流程

    本发明涉及一种mysql数据恢复方法,尤其涉及一种基于事务日志的mysql数据恢复方法. 背景技术: :在对mysql数据库进行日常操作的过程中,总是无法避免会产生各种误删数据,误改数据等操作.这个时 ...

  4. Spark集群安装介绍

    (1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481 (2)spark开发环境搭建 http://aperise.iteye.com/blo ...

  5. Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门

    目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...

  6. 从0到1搭建spark集群---企业集群搭建

    今天分享一篇从0到1搭建Spark集群的步骤,企业中大家亦可以参照次集群搭建自己的Spark集群. 一.下载Spark安装包 可以从官网下载,本集群选择的版本是spark-1.6.0-bin-hado ...

  7. 基于Hadoop安装spark集群

    基于Hadoop的spark环境搭建 已有环境情况 Hadoop HA Java 软件版本 Hadoop 2.7.2 Java 1.8.0_301 Scala 2.11.8 Spark 2.1.0 下 ...

  8. spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

    点击蓝字关注我 前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce.Spark,本文就接着上一 ...

  9. Spark基础(1)——搭建Spark开发环境、UI界面查看spark集群

    可直接从2.Spark部署开始操作 目录 1.环境前提 1.1已经搭建好hadoop环境 1.2我的参考配置环境 2.Spark部署 2.1下载spark安装包 2.2解压spark安装包 2.2.1 ...

最新文章

  1. 【ABAP】通过SE30来测试程序的执行效率
  2. 启明云端分享|SSD20X_烧录mac地址文档参考
  3. LiveVideoStack线上分享第三季(十三):腾讯云LiteAVSDK演进之路
  4. OpenStack已死?恐怕你想多了 | 技术头条
  5. SQLSERVER压缩数据文件的用处有多大
  6. 12.Qt中字符串相关处理
  7. 双系统重装win7/Xp后如何恢复ubuntu引导--转载
  8. 5G(10)----5G 终端发展
  9. C#(64位系统) 解决MySQLDriverCS未能加载文件或程序集,或它的某一个依赖项
  10. php用户名框架,ThinkPHP框架结合Ajax实现用户名校验功能示例
  11. 字模提取软件怎么放大_图片无损放大软件 Topaz Gigapixel AI
  12. 静态初始化--我的理解
  13. failed to execute ‘dot‘, make sure the Graphviz executables are on your systems‘ PATH
  14. MATLAB实现自编码器(五)——变分自编码器(VAE)实现图像生成的帮助函数
  15. 数学建模【开会总结】
  16. word2003流程图变成图片_流程图怎么画word2003
  17. python空气质量等级判断_空气质量等级的判定
  18. C语言内部强化培训视频教程
  19. MySQL 中 delete where in 语句的子查询限制
  20. 热门编程语言那么多,该选择哪个

热门文章

  1. 百度SEO,下拉框,关键词,搜索框,关键词排名。
  2. android之城市定位
  3. linux 4.9内核,Linux Kernel 4.9 正式发布
  4. 有关windows 系统中NvCpl.dll出错的处理办法
  5. matlab解决excel 导入数据精度的问题
  6. mysql 参数名 下划线,MySQL表名称中的下划线会引起问题吗?
  7. 通过Navicate for MySQL导入SQL文件
  8. 【开源】STC8G2K64S4开发板
  9. 刚刚给新东方写了调查报告。。。。累死了
  10. 这60部经典电视剧,看过10部以上说明你真的老了!