CN107885779A - 一种Spark并行访问MPP数据库的方法 - Google Patents
一种Spark并行访问MPP数据库的方法 Download PDFInfo
- Publication number
- CN107885779A CN107885779A CN201710946027.3A CN201710946027A CN107885779A CN 107885779 A CN107885779 A CN 107885779A CN 201710946027 A CN201710946027 A CN 201710946027A CN 107885779 A CN107885779 A CN 107885779A
- Authority
- CN
- China
- Prior art keywords
- spark
- mpp
- node
- mpp databases
- databases
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种Spark并行访问MPP数据库的方法,包括以下步骤:Spark集群中的节点访问MPP数据库的入口,所述MPP数据库的入口收集表数据在MPP数据库集群中的分布信息并返回给Spark;Spark先将收到的每个数据节点作为一个分区,如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区;Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。有益效果:Spark可以通过JDBC连接到集群的一个管理节点上,获取表数据在集群节点间的分布信息,然后通过JDBC连接到多个数据节点并行地获取表数据,大大提高访问速度。
Description
技术领域
本发明涉及数据库技术领域,具体来说,涉及一种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),如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。
假设数据节点1上关键列的值范围为[1, 100000],那么将会把分区1划分为10个分区,分别查询键值为[1, 10000],[10001, 20000],……,[90001, 100000]的数据。对其他数据节点也同样以关键列值划分多个分区。
S3 Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。
为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。
在具体使用时,根据本发明所述的一种Spark并行访问MPP数据库的方法,使用Scala语言实现MppRDD,以JAR包的形式供Spark调用。以Spark SQL为例,使用之前需要先import MppRDD。
具体实现代码可参考:
scala>import java.sql.DriverManager
import java.sql.DriverManager
scale>import org.apache.spark.rdd.MppRDD
import org.apache.spark.rdd.MppRDD
scala>val mpprdd=new MppRDD(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] at MppRDDat <console>: 35
scala> mpprdd.collect().foreach(println)
(1,hahaha)
(3,saprk)
(2,doooop)
(4,mpprdd)
jdbcUrl:必选。连接数据库的JDBC URL,形如"jdbc:subprotocol://host:port/database"。
jdbcDriver:必选。JDBC驱动名。
user:必选。访问数据库使用的用户名。
password:可选。访问数据库使用的密码。
dbTable:必选。要访问的数据库名,形如[schema.]tableName。
whereClause:可选。查询的过滤条件,默认查询全部数据。
keyColumn:可选。关键列名。如果指定关键列,则会依据关键列的值继续细分分区。最多可指定一列。
mapRow:必选。从ResultSet到期望的单行结果的映射函数。
综上所述,借助于本发明的上述技术方案,Spark可以通过JDBC连接到集群的一个管理节点上,获取表数据在集群节点间的分布信息,然后通过JDBC连接到多个数据节点并行地获取表数据,大大提高访问速度。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种Spark并行访问MPP数据库的方法,其特征在于,包括以下步骤:
S1 Spark集群中的节点访问MPP数据库的入口,所述MPP数据库的入口收集表数据在MPP数据库集群中的分布信息并返回给Spark;
S2 Spark先将收到的每个数据节点作为一个分区;
S3 Spark将任务分配到执行节点,每个Spark执行节点通过JDBC连接对应的数据节点,Spark集群即可并行地访问MPP数据库。
2.根据权利要求1所述的Spark并行访问MPP数据库的方法,其特征在于,步骤S2中如果指定了关键列,则会依据关键列值的上下界,将每个分区再细分为多个分区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710946027.3A CN107885779A (zh) | 2017-10-12 | 2017-10-12 | 一种Spark并行访问MPP数据库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710946027.3A CN107885779A (zh) | 2017-10-12 | 2017-10-12 | 一种Spark并行访问MPP数据库的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107885779A true CN107885779A (zh) | 2018-04-06 |
Family
ID=61781425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710946027.3A Pending CN107885779A (zh) | 2017-10-12 | 2017-10-12 | 一种Spark并行访问MPP数据库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107885779A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145041A (zh) * | 2018-07-18 | 2019-01-04 | 北京云星宇交通科技股份有限公司 | 一种数据访问方法及系统 |
CN110618860A (zh) * | 2019-09-09 | 2019-12-27 | 中盈优创资讯科技有限公司 | 基于Spark的Kafka消费并发处理方法及装置 |
CN111159235A (zh) * | 2019-12-20 | 2020-05-15 | 中国建设银行股份有限公司 | 数据预分区方法、装置、电子设备及可读存储介质 |
CN112181305A (zh) * | 2020-09-30 | 2021-01-05 | 北京人大金仓信息技术股份有限公司 | 数据库集群网络分区选择方法和装置 |
CN112905854A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN114610959A (zh) * | 2022-05-12 | 2022-06-10 | 恒生电子股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN116756150A (zh) * | 2023-08-16 | 2023-09-15 | 浩鲸云计算科技股份有限公司 | 一种Mpp数据库大表关联加速方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160132527A1 (en) * | 2012-06-27 | 2016-05-12 | Emc Corporation | Declarative cluster management |
CN105765578A (zh) * | 2013-11-26 | 2016-07-13 | 起元科技有限公司 | 分布式文件系统中的数据的并行访问 |
CN107066546A (zh) * | 2017-03-20 | 2017-08-18 | 国家计算机网络与信息安全管理中心 | 一种基于mpp引擎的跨数据中心快速查询方法和系统 |
-
2017
- 2017-10-12 CN CN201710946027.3A patent/CN107885779A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160132527A1 (en) * | 2012-06-27 | 2016-05-12 | Emc Corporation | Declarative cluster management |
CN105765578A (zh) * | 2013-11-26 | 2016-07-13 | 起元科技有限公司 | 分布式文件系统中的数据的并行访问 |
CN107066546A (zh) * | 2017-03-20 | 2017-08-18 | 国家计算机网络与信息安全管理中心 | 一种基于mpp引擎的跨数据中心快速查询方法和系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145041A (zh) * | 2018-07-18 | 2019-01-04 | 北京云星宇交通科技股份有限公司 | 一种数据访问方法及系统 |
CN110618860A (zh) * | 2019-09-09 | 2019-12-27 | 中盈优创资讯科技有限公司 | 基于Spark的Kafka消费并发处理方法及装置 |
CN111159235A (zh) * | 2019-12-20 | 2020-05-15 | 中国建设银行股份有限公司 | 数据预分区方法、装置、电子设备及可读存储介质 |
CN112181305A (zh) * | 2020-09-30 | 2021-01-05 | 北京人大金仓信息技术股份有限公司 | 数据库集群网络分区选择方法和装置 |
CN112181305B (zh) * | 2020-09-30 | 2024-06-07 | 北京人大金仓信息技术股份有限公司 | 数据库集群网络分区选择方法和装置 |
CN112905854A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN114610959A (zh) * | 2022-05-12 | 2022-06-10 | 恒生电子股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN116756150A (zh) * | 2023-08-16 | 2023-09-15 | 浩鲸云计算科技股份有限公司 | 一种Mpp数据库大表关联加速方法 |
CN116756150B (zh) * | 2023-08-16 | 2023-10-31 | 浩鲸云计算科技股份有限公司 | 一种Mpp数据库大表关联加速方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107885779A (zh) | 一种Spark并行访问MPP数据库的方法 | |
CN106776768B (zh) | 一种分布式爬虫引擎的url抓取方法及系统 | |
CN106790718A (zh) | 服务调用链路分析方法及系统 | |
CN103678550B (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
US8676951B2 (en) | Traffic reduction method for distributed key-value store | |
US7526471B2 (en) | Field-to-field join constraints | |
CN103020256B (zh) | 一种大规模数据的关联规则挖掘方法 | |
CN105488231B (zh) | 一种基于自适应表维度划分的大数据处理方法 | |
CN104111996A (zh) | 基于hadoop平台的医保门诊大数据抽取系统及方法 | |
CN109446279A (zh) | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 | |
CN103631909B (zh) | 对大规模结构化和非结构化数据联合处理的系统及方法 | |
CN103729478B (zh) | 基于MapReduce的LBS兴趣点发现方法 | |
CN103646051B (zh) | 一种基于列存储的大数据并行处理系统及方法 | |
CN104361221A (zh) | 基于异构系统数据映射模板的医疗数据采集系统及方法 | |
CN106250519A (zh) | 用于并行数据库的数据查询方法和装置 | |
CN107066546B (zh) | 一种基于mpp引擎的跨数据中心快速查询方法和系统 | |
CN107480252A (zh) | 一种数据查询方法、客户端、服务端及系统 | |
CN107247799A (zh) | 兼容多种大数据存储的数据处理方法、系统及其建模方法 | |
Samwel et al. | F1 query: Declarative querying at scale | |
CN106599190A (zh) | 基于云计算的动态Skyline查询方法 | |
WO2004097677A1 (en) | Automatic data consolidation | |
Lorie et al. | A low communication sort algorithm for a parallel database machine | |
CN1588358A (zh) | 对mdx多维数据查询语句的处理方法和系统 | |
CN104572862A (zh) | 一种海量数据存储访问方法及系统 | |
CN106156319A (zh) | 可伸缩的分布式的资源描述框架数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180406 |