[发明专利]一种Spark并行访问MPP数据库的方法在审
申请号: | 201710946027.3 | 申请日: | 2017-10-12 |
公开(公告)号: | CN107885779A | 公开(公告)日: | 2018-04-06 |
发明(设计)人: | 孙旭 | 申请(专利权)人: | 北京人大金仓信息技术股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京纽乐康知识产权代理事务所(普通合伙)11210 | 代理人: | 秦月贞 |
地址: | 100083 北京市朝阳区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 spark 并行 访问 mpp 数据库 方法 | ||
技术领域
本发明涉及数据库技术领域,具体来说,涉及一种Spark并行访问MPP数据库的方法。
背景技术
从关系数据库读取数据,Spark可以使用DataFrame和JdbcRDD等方法。这些方法在接口上都提供一个JDBC连接串到数据库的入口(包含主机+端口号),在实现上通过JDBC连接到这一个入口节点访问数据库。
从性能角度考虑,这些方法对于单机数据库来说是可以接受的;但对于MPP数据库来说不可接受。因为对于MPP数据库来说,一个表的数据可能会分布在集群的多个数据节点上,而Spark只以一个管理节点作为入口访问数据库——即使JdbcRDD方法支持按关键列的值分区,可以并发多个连接到入口节点——但整体的性能瓶颈仍是(由JDBC连接串指定的)入口节点,无法充分发挥集群多机的性能优势。
以下为本发明中可能会涉及的一些关键术语:
Spark:一个快速的、通用的大规模数据处理引擎。
MPP:massively parallel processing,大规模并行处理技术。
管理节点:分布式数据库系统中,接受客户端连接并解释SQL,将工作分配给计算节点,向客户端返回结果集。
计算节点:存储和进行SQL计算的节点。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的上述技术问题,本发明提出一种Spark并行访问MPP数据库的方法,Spark可以通过JDBC连接到集群的一个管理节点上,获取表数据在集群节点间的分布信息,然后通过JDBC连接到多个数据节点并行地获取表数据。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种Spark并行访问MPP数据库的方法,包括以下步骤:
S1 Spark集群中的节点访问MPP数据库的入口(管理节点1),管理节点1收集表数据在MPP数据库集群中的分布信息并返回给Spark,假设数据分布在数据节点1、2和3;
S2 Spark先将收到的每个数据节点作为一个分区(假设为分区1、2和3),如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。
假设数据节点1上关键列的值范围为[1, 100000],那么将会把分区1划分为10个分区,分别查询键值为[1, 10000],[10001, 20000],……,[90001, 100000]的数据。对其他数据节点也同样以关键列值划分多个分区。
S3 Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。
本发明的有益效果:Spark集群利用MPP数据库中数据在节点间的分布信息,进行动态的分区划分,利用框架通用的任务分配机制把分区分配给多个Spark执行节点来访问MPP数据库的多个节点,从而充分利用两个集群的多机优势,实现对MPP数据库的高度并行访问,大大提高访问速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例所述的一种Spark并行访问MPP数据库的方法的流程示意图;
图2是根据本发明实施例所述的一种Spark并行访问MPP数据库的方法的应用示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1至2所示,根据本发明实施例所述的一种Spark并行访问MPP数据库的方法,包括以下步骤:
S1 Spark集群中的节点访问MPP数据库的入口(管理节点1),管理节点1收集表数据在MPP数据库集群中的分布信息并返回给Spark,假设数据分布在数据节点1、2和3;
S2 Spark先将收到的每个数据节点作为一个分区(假设为分区1、2和3),如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京人大金仓信息技术股份有限公司,未经北京人大金仓信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710946027.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:全自动全功能洗车辅助喷水作业系统
- 下一篇:两轴式龙门全自动洗车机