CN111966727A - 基于Spark和Hive的分布式OLAP即席查询方法 - Google Patents
基于Spark和Hive的分布式OLAP即席查询方法 Download PDFInfo
- Publication number
- CN111966727A CN111966727A CN202010808594.4A CN202010808594A CN111966727A CN 111966727 A CN111966727 A CN 111966727A CN 202010808594 A CN202010808594 A CN 202010808594A CN 111966727 A CN111966727 A CN 111966727A
- Authority
- CN
- China
- Prior art keywords
- query
- olap
- execution
- keyword
- verification
- 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
- 238000000034 method Methods 0.000 title claims abstract description 11
- 238000012545 processing Methods 0.000 title abstract description 5
- 238000012795 verification Methods 0.000 claims abstract description 12
- 238000001514 detection method Methods 0.000 claims abstract description 4
- 230000001960 triggered effect Effects 0.000 claims abstract description 3
- 238000004458 analytical method Methods 0.000 abstract description 21
- 238000005457 optimization Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 229910021532 Calcite Inorganic materials 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000004141 dimensional analysis Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于Spark和Hive的分布式OLAP即席查询方法,包括如下步骤:1、由OLAP Query开始,可以是任一种方式触发OLAP Query,是引擎执行的第一个阶段;2、在Query获取Query Keyword后,会进行关键词的Validator,即验证检测;3、验证后如果验证结果通过则进行后续Cache操作;4、进行Router路由匹配;5、进行SQL Rewrite;6、本阶段执行引擎会进行执行,并得到相应的结果。本专利的优点在于,不仅支持海量数据,还可以支撑海量数据下任意维度和时间跨度的高效统计查询,提供一个灵活多维度的组合型查询工具,对应不同维度的业务分析。
Description
技术领域
本发明涉及大数据多维分析引擎技术领域,尤其涉及基于Spark和Hive的分布式OLAP即席查询方法。
背景技术
近年来随着技术发展,企业对于各种报表的查询分析系统需求愈发高涨,传统的分析系统大多基于MySQL等关系型数据库搭建,性能难以满足日益增长海量数据查询分析。由于大数据技术平台高速发展完善,实时的核心业务数据逐步应用在大数据平台。OLAP即联机分析处理,OLAP的核心是分析,侧重于分析决策,分析的数据量级很大。OLAP实现的技术难点和基于Hadoop生态大数据平台完全匹配,以Spark进行分布式实时计算、以Hive进行数据查询,解决海量数据的分析查询的技术难点。
发明内容
为实现上述目的,本发明提供如下技术方案:
基于Spark和Hive的分布式OLAP即席查询方法,包括如下步骤:
1、由OLAP Query开始,可以是任一种方式触发OLAP Query,是引擎执行的第一个阶段;
2、在Query获取Query Keyword后,会进行关键词的Validator,即验证检测,进行关键词正确性、安全性的验证,避免恶意Query;
3、验证后如果验证结果通过则进行后续Cache操作,反之则取消本次查询,Cache操作可以提高后续重复Query的效率;
4、不同的关键词和Query Router会对应不同的查询结果,因此需要进行Router路由匹配;
5、路由匹配成功后,会进行SQL Rewrite,本阶段会将HQL转换为通用格式,然后再转向各种SQL,支持各种不同类型的数据库,例如MySQL和Oracle;
6、本阶段执行引擎会进行执行,并得到相应的结果,整个执行结束。
本专利的优点在于,与现有技术相比,本发明解决了海量数据级别的查询分析,不再只是基于传统单一的关系型数据为底层存储和计算,依托于Hadoop大数据平台,将查询分析的计算和存储解耦合,使用Spark进行高效分布式计算、使用Hive依托于HDFS进行海量数据存储,不仅支持海量数据,还可以支撑海量数据下任意维度和时间跨度的高效统计查询,提供一个灵活多维度的组合型查询工具,对应不同维度的业务分析。
附图说明
图1为本发明的方法流程图
图2为根据本发明一个实施例的OLAP任意多维分析实现---跨执行引擎框架图
图3为根据本发明一个实施例的OLAP任意多维分析引擎实现---基于Calcite的SQL Rebuild流程图
图4为根据本发明一个实施例的OLAP任意多维分析引擎实现---基于ANTLR的SQL语法增强图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本专利包括七个步骤:
1、图1是整个OLAP引擎的执行流程,由OLAP Query开始,可以是任一种方式触发OLAP Query,是引擎执行的第一个阶段。
2、在Query获取Query Keyword后,会进行关键词的Validator(验证检测),进行关键词正确性、安全性的验证,避免恶意Query。
3、验证后如果验证结果通过则进行后续Cache操作,反之则取消本次查询,Cache操作可以提高后续重复Query的效率。
4、不同的关键词和Query Router会对应不同的查询结果,因此需要进行Router路由匹配。
5、路由匹配成功后,会进行SQL Rewrite,本阶段会将HQL转换为通用格式,然后再转向各种SQL,支持各种不同类型的数据库,例如MySQL和Oracle。
6、第六阶段执行引擎会进行执行,并得到相应的结果,整个执行结束。
看似与传统的并不太大差别,是因为在引擎流程这块是相对较为固定的,每一步都是必须步骤,其中区别在于,SQL的优化、转化、提取以及执行引擎的区别,OLAP任意多维分析查询技术复杂度要远远高于传统引擎。
图2为本发明一个实施例的OLAP任意多维分析实现---跨执行引擎框架图。跨执行引擎最外层是统一查询接口层,最外层查询需要定义一种查询规范,对应的关键词匹配对应的Router,方便用户使用,方便后续维护,本设计遵循Restful设计风格。
在接口层下是查询优化层,查询优化由自主进行开发,根据个人企业的不同需求对相应的Query进行优化,以达到查询的目的,也可以配置通用优化规则,同时可以继承自第三方平台的优化规则,这样可以实现不同角度的优化,实现不同的需求。集自定义、特殊需求、第三方平台多个优化策略,实现查询优化。
在第三层是执行引擎层,也是OLAP任意维度分析查询的重点所在,底层实现是依托于Hadoop大数据生态,以HDFS作为分布式海量数据的存储,使用Spark代替MapReduce作为分布式计算引擎,以Hive作为数据查询。Spark和Hive都可以完美兼容Hadoop生态,以分布式为核心,将复杂海量的分析查询进行简单化。同时也支持MaxCompute ADS和JDBC MPP/MySQL。
图2是一种框架模式,该框架可以满足不同的需求,可自定义、可继承第三方,以低耦合、高适用为核心理念,贯穿实现OLAP任意维度即席分析查询。
图3为根据本发明一个优选实施例的OLAP任意多维分析引擎实现---基于Calcite的SQL Rebuild流程图。Calcite是一款SQL解析工具,可以将各种SQL语句解析称成抽象语法术AST,之后通过操作AST可以将SQL中SQL中所要表达的算法和关系体现在具体的代码中。图3即为Calcite在SQL查询优化的具体应用,以任一SQL为例,首先通过Calcite进行语法树的解析,获取到AST,再根据SQL Rebuild重新进行SQL同源转化,可以支持不同的数据库,如MySQL和Oracle等。
图4示出根据本发明一个优选实施例的OLAP任意多维分析引擎实现---基于ANTLR的SQL语法增强图。ANTLR是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器,包含词法分析器(Lexer)、语法分析器(Parser)、树分析器(tree parser)。图4同样属于OLAP即席查询系统的一个具体应用,支持SQL建模、业务算子、自定义建模。以图4所示内容为例,使用临时表,聚合函数后输出最终表,‘消费记录表’命名为C,C中的消费额按大区聚合sum计算后命名为‘大区聚合消费额’,将‘大区聚合消费额’和‘大区’组成临时表zone_sum;将‘消费记录表’命名为D,D中的消费额按城市聚合sum计算后命名为‘城市聚合消费额’,将‘城市聚合消费额’和‘城市’组成临时表city_sum;将zone_sum和city_sum和‘消费记录表’聚合后,将‘日期’、‘城市’、‘大区’、‘消费额’、‘城市聚合消费额’、‘大区聚合消费额’组成临时表final_output,输出final_output即可。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (1)
1.基于Spark和Hive的分布式OLAP即席查询方法,其特征在于,包括如下步骤:
1)、由OLAP Query开始,可以是任一种方式触发OLAP Query,是引擎执行的第一个阶段;
2)、在Query获取Query Keyword后,会进行关键词的Validator,即验证检测,进行关键词正确性、安全性的验证,避免恶意Query;
3)、验证后如果验证结果通过则进行后续Cache操作,反之则取消本次查询,Cache操作可以提高后续重复Query的效率;
4)、不同的关键词和Query Router会对应不同的查询结果,因此需要进行Router路由匹配;
5)、路由匹配成功后,会进行SQL Rewrite,本阶段会将HQL转换为通用格式,然后再转向各种SQL,支持各种不同类型的数据库;
6)、本阶段执行引擎会进行执行,并得到相应的结果,整个执行结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808594.4A CN111966727A (zh) | 2020-08-12 | 2020-08-12 | 基于Spark和Hive的分布式OLAP即席查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808594.4A CN111966727A (zh) | 2020-08-12 | 2020-08-12 | 基于Spark和Hive的分布式OLAP即席查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111966727A true CN111966727A (zh) | 2020-11-20 |
Family
ID=73365426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010808594.4A Pending CN111966727A (zh) | 2020-08-12 | 2020-08-12 | 基于Spark和Hive的分布式OLAP即席查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966727A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407587A (zh) * | 2021-07-19 | 2021-09-17 | 北京百度网讯科技有限公司 | 用于联机分析处理引擎的数据处理方法、装置、设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183378A (zh) * | 2006-11-14 | 2008-05-21 | 国际商业机器公司 | 用于在查询时间清洗基于序列的数据的方法和系统 |
CN102918531A (zh) * | 2010-05-28 | 2013-02-06 | 甲骨文国际公司 | 用于为商业智能服务器使用的数据提供多语言支持的系统和方法 |
CN105205085A (zh) * | 2014-06-30 | 2015-12-30 | 中兴通讯股份有限公司 | 一种海量数据的多维分析方法及装置 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN107704608A (zh) * | 2017-10-17 | 2018-02-16 | 北京览群智数据科技有限责任公司 | 一种olap多维分析和数据挖掘系统 |
CN108536823A (zh) * | 2018-04-10 | 2018-09-14 | 北京工业大学 | 一种物联网感知大数据的缓存设计和查询方法 |
CN108763573A (zh) * | 2018-06-06 | 2018-11-06 | 众安信息技术服务有限公司 | 一种基于机器学习的olap引擎路由方法及系统 |
CN109241049A (zh) * | 2018-07-04 | 2019-01-18 | 杭州数云信息技术有限公司 | 一种olap架构 |
CN109344186A (zh) * | 2018-08-23 | 2019-02-15 | 成都四方伟业软件股份有限公司 | 一种bi系统多源数据库跨源跨库融合系统和融合方法 |
CN110162515A (zh) * | 2019-04-30 | 2019-08-23 | 中国科学院深圳先进技术研究院 | 一种解耦合的弹性数据仓库架构 |
CN111427911A (zh) * | 2020-03-25 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
-
2020
- 2020-08-12 CN CN202010808594.4A patent/CN111966727A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183378A (zh) * | 2006-11-14 | 2008-05-21 | 国际商业机器公司 | 用于在查询时间清洗基于序列的数据的方法和系统 |
CN102918531A (zh) * | 2010-05-28 | 2013-02-06 | 甲骨文国际公司 | 用于为商业智能服务器使用的数据提供多语言支持的系统和方法 |
CN105205085A (zh) * | 2014-06-30 | 2015-12-30 | 中兴通讯股份有限公司 | 一种海量数据的多维分析方法及装置 |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN107704608A (zh) * | 2017-10-17 | 2018-02-16 | 北京览群智数据科技有限责任公司 | 一种olap多维分析和数据挖掘系统 |
CN108536823A (zh) * | 2018-04-10 | 2018-09-14 | 北京工业大学 | 一种物联网感知大数据的缓存设计和查询方法 |
CN108763573A (zh) * | 2018-06-06 | 2018-11-06 | 众安信息技术服务有限公司 | 一种基于机器学习的olap引擎路由方法及系统 |
CN109241049A (zh) * | 2018-07-04 | 2019-01-18 | 杭州数云信息技术有限公司 | 一种olap架构 |
CN109344186A (zh) * | 2018-08-23 | 2019-02-15 | 成都四方伟业软件股份有限公司 | 一种bi系统多源数据库跨源跨库融合系统和融合方法 |
CN110162515A (zh) * | 2019-04-30 | 2019-08-23 | 中国科学院深圳先进技术研究院 | 一种解耦合的弹性数据仓库架构 |
CN111427911A (zh) * | 2020-03-25 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407587A (zh) * | 2021-07-19 | 2021-09-17 | 北京百度网讯科技有限公司 | 用于联机分析处理引擎的数据处理方法、装置、设备 |
CN113407587B (zh) * | 2021-07-19 | 2023-10-27 | 北京百度网讯科技有限公司 | 用于联机分析处理引擎的数据处理方法、装置、设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Das et al. | Falcon: Scaling up hands-off crowdsourced entity matching to build cloud services | |
Gurajada et al. | TriAD: a distributed shared-nothing RDF engine based on asynchronous message passing | |
WO2021083239A1 (zh) | 一种进行图数据查询的方法、装置、设备及存储介质 | |
US8943059B2 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
CN105955999B (zh) | 一种大规模RDF图的ThetaJoin查询处理方法 | |
US20090319501A1 (en) | Translation of streaming queries into sql queries | |
US8554760B2 (en) | System and method for optimizing queries | |
CN102915365A (zh) | 基于Hadoop的分布式搜索引擎构建方法 | |
Dal Bianco et al. | A fast approach for parallel deduplication on multicore processors | |
CN112860727B (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
Yang et al. | Mining web access sequence with improved apriori algorithm | |
Efthymiou et al. | Benchmarking blocking algorithms for web entities | |
Zhang et al. | Oceanrt: Real-time analytics over large temporal data | |
CN111881160A (zh) | 一种基于关系代数的等价展开方法的分布式查询优化方法 | |
CN111966727A (zh) | 基于Spark和Hive的分布式OLAP即席查询方法 | |
Lai et al. | {GLogS}: Interactive graph pattern matching query at large scale | |
Braganholo et al. | A survey on xml fragmentation | |
Gillani et al. | Continuous graph pattern matching over knowledge graph streams | |
Nahshon et al. | Incorporating information extraction in the relational database model | |
Tao et al. | Range aggregation with set selection | |
CN103092881A (zh) | 内联网搜索方法和装置、搜索引擎及终端设备 | |
Li et al. | ROVEC: Runtime Optimization of Vectorized Expression Evaluation for Column Store |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20201120 |