CN107748766A - 一种基于Presto和Elasticsearch的大数据快速查询方法 - Google Patents
一种基于Presto和Elasticsearch的大数据快速查询方法 Download PDFInfo
- Publication number
- CN107748766A CN107748766A CN201710900970.0A CN201710900970A CN107748766A CN 107748766 A CN107748766 A CN 107748766A CN 201710900970 A CN201710900970 A CN 201710900970A CN 107748766 A CN107748766 A CN 107748766A
- Authority
- CN
- China
- Prior art keywords
- data
- offset
- elasticsearch
- clusters
- presto
- 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.)
- Granted
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Presto和Elasticsearch的大数据快速查询方法,其将所有被查询数据包含时间字段并按日分索引的方式保存在Elasticsearch集群中,然后通过Presto集群接收并解析SQL请求生成相应的查询计划,获取满足查询计划的数据在Elasticsearch集群中的索引范围;通过逐步统计和计算,定位出所要查询的目标页数据所在的索引和时间区间;将时间区间加入原SQL语句的查询条件中从Elasticsearch集群中读取目标页的数据信息。本发明快速定位了目标页数据所在位置,大幅减少多余数据的读取,以提高随机跳页查询的性能。
Description
技术领域
本发明涉及大数据的快速查询方法,特别提供了一种基于Presto和Elasticsearch的大数据快速查询方法。
背景技术
Elasticsearch是一个建立在全文搜索引擎Apache LuceneTM基础上的实时分析的分布式搜索引擎,它使用Lucene作为核心来实现所有索引和搜索的功能,使得每个文档的内容都可以被索引、搜索、排序、过滤。同时,提供了丰富的聚合功能,可以对数据进行多维度分析。但elasticsearch缺乏传统的SQL语法支持,开发人员使用较难,以关系型数据库为基础的***其数据迁移、对接工作也不易进行,尤其在用户进行查询和翻页时,复杂的查询和随机的、大范围的翻页使elasticsearch服务器长时间处于高负载的状态下,同时为了翻过大量的页数,读取了非常多并不会被使用的数据。而presto可为elasticsearch提供基本的SQL语法支持,但其基于内存的查询机制也需要把大量的目标数据预读到集群内存中,消耗大量的服务器资源和时间,也未能从根本上解决该问题。
发明内容
本发明的目的在于提供一种基于Presto和Elasticsearch的大数据快速查询方法,其使用presto集群进行SQL的接收和解析,结合elasticsearch的Date HistogramAggregation聚合统计功能,逐步定位目标页数据,实现数据的快速查询。
为实现上述目的,本发明采用的技术方案是:
一种基于Presto和Elasticsearch的大数据快速查询方法,其将所有被查询数据包含时间字段并按日分索引的方式保存在Elasticsearch集群中,然后通过Presto集群接收并解析SQL请求生成相应的查询计划,获取满足查询计划的数据在Elasticsearch集群中的索引范围;通过逐步统计和计算,定位出所要查询的目标页数据所在的索引和时间区间;将时间区间加入原SQL语句的查询条件中从Elasticsearch集群中读取目标页的数据信息。
所述大数据快速查询方法具体包括以下步骤:
步骤1、Presto集群接收并解析SQL请求并生成相应的查询计划,得到满足查询条件的数据在elasticsearch集群中的索引范围以及满足查询条件的数据总条数;
步骤2、根据用户提交的SQL中数据偏移量OFFSET和索引范围中的各索引的数据条数得到目标数据页位于哪个或哪几个索引中,跳过的索引的数据条数从OFFSET中直接扣除,得出新的数据偏移量OFFSET_1;
步骤3、通过Elasticsearch的Date Histogram Aggregation接口,对步骤2得到的目标数据页所在的索引进行按时间的分段统计,得到各个时间段中满足条件的数据条数,具体如下:
步骤3.1、按小时为单位对步骤2得到的目标数据页所在的索引进行统计,结合步骤2中得出的数据偏移量OFFSET_1,计算出所要查询的数据位于哪个小时时间段中,跳过的小时时间段的数据条数从OFFSET_1中直接扣除,得出新的数据偏移量OFFSET_2,将OFFSET_2与***预设的阈值M作比较;
如果小于等于M,则将该小时时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_2+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_2大于M,则进入下一步;
步骤3.2、按分钟为单位对步骤3.1得出的小时区间的数据进行统计,结合数据偏移量OFFSET_2,计算出所要查询的数据位于哪个分钟时间段中,跳过的时间段的数据条数从OFFSET_2中直接扣除,得出新的数据偏移量OFFSET_3,将OFFSET_3与***预设的阈值M作比较;
如果小于等于M,则将该分钟时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_3+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_3大于M,则进入下一步;
步骤3.3、按秒为单位对步骤3.2中得到的分钟区间的数据进行统计,结合数据偏移量OFFSET_3,计算出所要查询的数据位于哪个秒时间段中,跳过的时间段数据条数从OFFSET_3中直接扣除,得出新的数据偏移量OFFSET_4,将该秒时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_4+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;所述COUNT为每一页的数据条数。
本发明通过通过Presto集群接收并解析SQL请求生成相应的查询计划,获取满足查询计划的数据在Elasticsearch集群中的索引范围;通过逐步统计和计算,定位出所要查询的目标页数据所在的索引和时间区间;将时间区间加入原SQL语句的查询条件中从Elasticsearch集群中读取目标页的数据信息,从而快速定位目标页数据所在位置,大幅减少多余数据的读取,以提高随机跳页查询的性能。
附图说明
图1为本发明***框架图;
图2为本发明目标页数据定位流程图。
具体实施方式
如图1所示,如图1和图2所示,本发明揭示了一种基于Presto和Elasticsearch的大数据快速查询方法,其包括以下步骤:
步骤1、被查询的数据至少包含一个timestamp类型的字段,并按天分布的方式保存在elasticsearch的各个索引中;例2017-01-01 08:00:00的数据就保存在名为2017-01-01的索引中;
步骤2、用户提交SQL查询到presto服务器,该SQL满足以下形式:
SELECT COLUMN1,COLUMN2...FROM TABLE[WHERE COLLECTTIME>、<、=‘yyyy-MM-dd HH:mm:ss’AND COLUMN1=’XXX’]ORDER BY COLLECTTIME[,COLUMN3,COLUMN4...][LIMIT OFFSET,LIMIT]
服务器将SQL解析并生成相应的查询计划,从而得知用户需要查询的数据保存在elasticsearch的哪些索引中,得到目标数据的索引范围;
步骤3、根据步骤2得到的索引范围,以该SQL中提交的查询条件,分别查询各个索引中符合该条件的数据总条数;
步骤4、根据步骤3得出的各索引数据条数,结合用户提交的SQL中数据偏移量OFFSET和每一页的数据条数COUNT得到目标数据页位于哪个或哪几个索引中,跳过的索引的数据条数从OFFSET中直接扣除,得出新的偏移量OFFSET_1;
步骤5、通过Elasticsearch的Date Histogram Aggregation接口,对步骤4得到的目标数据页所在的索引进行按时间的分段统计,得到各个时间段中满足条件的数据条数,具体如下:
步骤5.1、按小时为单位进行统计,由于一个索引中只包含一天的数据,因此可得出一天当中的24个时间段的数据条数;结合步骤4中得出的OFFSET_1,可计算出所要查询的数据位于哪个时间段中,跳过的时间段数据条数就可以从OFFSET_1中直接扣除,得出新的OFFSET_2,将OFFSET_2与***预设的阈值M作比较;
如果小于等于M,则将该时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_4+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_2大于M,则进入下一步;
步骤5.2、将上一步的得出的小时区间作为查询条件,对该区间的数据按分钟为单位进行统计,由于1小时有60分钟,因此可以得出该小时中每分钟符合条件的数据条数;结合步骤5.1中得出的OFFSET_2,可计算出所要查询的数据位于哪个分钟时间段中,跳过的时间段数据条数就可以从OFFSET_2中直接扣除,得出新的OFFSET_3,将OFFSET_3与***预设的阈值M作比较;
如果小于等于M,则将该时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_4+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_3大于M,则进入下一步;
步骤5.3、将上一步的得出的分钟区间作为查询条件,对该区间的数据按秒为单位进行统计,由于1分钟有60秒,因此可以得出该分中每秒符合条件的数据条数;结合步骤5.2中得出的OFFSET_3,可计算出所要查询的数据位于哪个时间段中,跳过的时间段数据条数就可以从OFFSET_3中直接扣除,得出新的OFFSET_4,将该时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_4+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果。
本发明将所有被查询数据包含时间字段并按日分索引的方式保存在Elasticsearch集群中,然后通过Presto集群接收并解析SQL请求生成相应的查询计划,获取满足查询计划的数据在Elasticsearch集群中的索引范围;通过逐步统计和计算,定位出所要查询的目标页数据所在的索引和时间区间;将时间区间加入原SQL语句的查询条件中从Elasticsearch集群中读取目标页的数据信息。本发明快速定位了目标页数据所在位置,大幅减少多余数据的读取,以提高随机跳页查询的性能。
以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (2)
1.一种基于Presto和Elasticsearch的大数据快速查询方法,其特征在于:其将所有被查询数据包含时间字段并按日分索引的方式保存在Elasticsearch集群中,然后通过Presto集群接收并解析SQL请求生成相应的查询计划,获取满足查询计划的数据在Elasticsearch集群中的索引范围;通过逐步统计和计算,定位出所要查询的目标页数据所在的索引和时间区间;将时间区间加入原SQL语句的查询条件中从Elasticsearch集群中读取目标页的数据信息。
2.根据权利要求1所述的一种基于Presto和Elasticsearch的大数据快速查询方法,其特征在于:所述大数据快速查询方法具体包括以下步骤:
步骤1、Presto集群接收并解析SQL请求并生成相应的查询计划,得到满足查询条件的数据在elasticsearch集群中的索引范围以及满足查询条件的数据总条数;
步骤2、根据用户提交的SQL中数据偏移量OFFSET和索引范围中的各索引的数据条数得到目标数据页位于哪个或哪几个索引中,跳过的索引的数据条数从OFFSET中直接扣除,得出新的数据偏移量OFFSET_1;
步骤3、通过Elasticsearch的DateHistogramAggregation接口,对步骤2得到的目标数据页所在的索引进行按时间的分段统计,得到各个时间段中满足条件的数据条数,具体如下:
步骤3.1、按小时为单位对步骤2得到的目标数据页所在的索引进行统计,结合数据偏移量OFFSET_1,计算出所要查询的数据位于哪个小时时间段中,跳过的小时时间段的数据条数从OFFSET_1中直接扣除,得出新的数据偏移量OFFSET_2,将OFFSET_2与***预设的阈值M作比较;
如果小于等于M,则将该小时时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_2+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_2大于M,则进入下一步;
步骤3.2、按分钟为单位对步骤3.1得出的小时区间的数据进行统计,结合数据偏移量OFFSET_2,计算出所要查询的数据位于哪个分钟时间段中,跳过的时间段的数据条数从OFFSET_2中直接扣除,得出新的数据偏移量OFFSET_3,将OFFSET_3与***预设的阈值M作比较;
如果小于等于M,则将该分钟时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_3+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;如果OFFSET_3大于M,则进入下一步;
步骤3.3、按秒为单位对步骤3.2中得到的分钟区间的数据进行统计,结合数据偏移量OFFSET_3,计算出所要查询的数据位于哪个秒时间段中,跳过的时间段数据条数从OFFSET_3中直接扣除,得出新的数据偏移量OFFSET_4,将该秒时间段的时间范围加入原SQL语句的查询条件中,从Elasticsearch集群中读取数量为OFFSET_4+COUNT的数量,在Presto集群中截取尾部COUNT条数据,得到最终查询结果;
所述COUNT为每一页的数据条数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710900970.0A CN107748766B (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710900970.0A CN107748766B (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107748766A true CN107748766A (zh) | 2018-03-02 |
CN107748766B CN107748766B (zh) | 2021-08-24 |
Family
ID=61255198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710900970.0A Active CN107748766B (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107748766B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN110321388A (zh) * | 2019-02-26 | 2019-10-11 | 南威软件股份有限公司 | 一种基于Greenplum的快速排序查询方法及*** |
CN110688357A (zh) * | 2018-06-20 | 2020-01-14 | 华为技术有限公司 | 一种日志型数据的读取方法和装置 |
CN111125178A (zh) * | 2018-10-30 | 2020-05-08 | 亿度慧达教育科技(北京)有限公司 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
CN112612827A (zh) * | 2020-12-25 | 2021-04-06 | 平安国际智慧城市科技股份有限公司 | 数据库分页查询方法、装置、计算机设备及存储介质 |
CN112650779A (zh) * | 2021-01-12 | 2021-04-13 | 浪潮云信息技术股份公司 | 一种基于ElasticSearch支持深度跳页查询的云审计方法 |
CN113961573A (zh) * | 2021-12-23 | 2022-01-21 | 北京力控元通科技有限公司 | 一种时序数据库查询方法和查询*** |
CN114072788A (zh) * | 2019-07-02 | 2022-02-18 | 国际商业机器公司 | 来自搜索引擎的随机采样 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007079303A2 (en) * | 2005-12-29 | 2007-07-12 | Amazon Technologies, Inc. | Method and apparatus for a distributed file storage and indexing service |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN104965873A (zh) * | 2015-06-10 | 2015-10-07 | 努比亚技术有限公司 | 一种分页查询方法及装置 |
CN107133267A (zh) * | 2017-04-01 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
-
2017
- 2017-09-28 CN CN201710900970.0A patent/CN107748766B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007079303A2 (en) * | 2005-12-29 | 2007-07-12 | Amazon Technologies, Inc. | Method and apparatus for a distributed file storage and indexing service |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN104965873A (zh) * | 2015-06-10 | 2015-10-07 | 努比亚技术有限公司 | 一种分页查询方法及装置 |
CN107133267A (zh) * | 2017-04-01 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688357A (zh) * | 2018-06-20 | 2020-01-14 | 华为技术有限公司 | 一种日志型数据的读取方法和装置 |
CN110688357B (zh) * | 2018-06-20 | 2021-08-20 | 华为技术有限公司 | 一种日志型数据的读取方法和装置 |
CN111125178A (zh) * | 2018-10-30 | 2020-05-08 | 亿度慧达教育科技(北京)有限公司 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
CN111125178B (zh) * | 2018-10-30 | 2021-05-28 | 亿度慧达教育科技(北京)有限公司 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN110321388A (zh) * | 2019-02-26 | 2019-10-11 | 南威软件股份有限公司 | 一种基于Greenplum的快速排序查询方法及*** |
CN110321388B (zh) * | 2019-02-26 | 2021-07-02 | 南威软件股份有限公司 | 一种基于Greenplum的快速排序查询方法及*** |
CN114072788A (zh) * | 2019-07-02 | 2022-02-18 | 国际商业机器公司 | 来自搜索引擎的随机采样 |
US11797615B2 (en) | 2019-07-02 | 2023-10-24 | International Business Machines Corporation | Random sampling from a search engine |
CN112612827A (zh) * | 2020-12-25 | 2021-04-06 | 平安国际智慧城市科技股份有限公司 | 数据库分页查询方法、装置、计算机设备及存储介质 |
CN112650779A (zh) * | 2021-01-12 | 2021-04-13 | 浪潮云信息技术股份公司 | 一种基于ElasticSearch支持深度跳页查询的云审计方法 |
CN113961573A (zh) * | 2021-12-23 | 2022-01-21 | 北京力控元通科技有限公司 | 一种时序数据库查询方法和查询*** |
Also Published As
Publication number | Publication date |
---|---|
CN107748766B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107748766A (zh) | 一种基于Presto和Elasticsearch的大数据快速查询方法 | |
Agarwal et al. | BlinkDB: queries with bounded errors and bounded response times on very large data | |
CN104424258B (zh) | 多维数据查询的方法、查询服务器、列存储服务器及*** | |
CN108009236A (zh) | 一种大数据查询方法、***、计算机及存储介质 | |
US20150347502A1 (en) | Systems and methods for query optimization | |
CN106649670A (zh) | 基于流式计算的数据监控方法及装置 | |
CN102521406A (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
CN102521405A (zh) | 支持高速加载的海量结构化数据存储、查询方法和*** | |
CN105045932A (zh) | 一种基于降序存储的数据分页查询方法 | |
CN111552885B (zh) | 实现自动化实时消息推送运营的***及其方法 | |
CN105163142A (zh) | 一种用户偏好确定方法、视频推荐方法和*** | |
CN107766413B (zh) | 一种实时数据流聚合查询的实现方法 | |
KR20160053933A (ko) | 스마트 검색 정제 기법 | |
CN103744913A (zh) | 一种基于搜索引擎技术的数据库检索方法 | |
CN113609374A (zh) | 基于内容推送的数据处理方法、装置、设备及存储介质 | |
CA2901685C (en) | Crowdsourcing user-provided identifiers and associating them with brand identities | |
CN109739882A (zh) | 一种基于Presto和Elasticsearch的大数据查询优化方法 | |
CN111488377A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
US8909619B1 (en) | Providing search results tools | |
Amagata et al. | Sliding window top-k dominating query processing over distributed data streams | |
CN103530344A (zh) | 一种基于改进的tf-idf方法的检索词实时修正方法 | |
US9405846B2 (en) | Publish-subscribe based methods and apparatuses for associating data files | |
CN109063201B (zh) | 一种基于混合存储方案的impala在线交互式查询方法 | |
CN111680072B (zh) | 基于社交信息数据的划分***及方法 | |
CN106649408B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |