CN107729428A - 一种基于Presto和Elasticsearch的SQL查询方法 - Google Patents
一种基于Presto和Elasticsearch的SQL查询方法 Download PDFInfo
- Publication number
- CN107729428A CN107729428A CN201710900972.XA CN201710900972A CN107729428A CN 107729428 A CN107729428 A CN 107729428A CN 201710900972 A CN201710900972 A CN 201710900972A CN 107729428 A CN107729428 A CN 107729428A
- Authority
- CN
- China
- Prior art keywords
- parsings
- elasticsearch
- sql
- presto
- request
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- 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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Presto和Elasticsearch的SQL查询方法,其通过Presto集群接收前端请求的SQL语句,将SQL语句解析成相应的查询计划;然后将查询计划下发到Elasticsearch集群的各个ES节点执行相应的请求。本发明通过Elasticsearch集群进行数据的保存和快速查询,通过Presto集群进行SQL的接收和解析,实现了采用SQL语言对Elasticsearch的查询、分析等操作,降低了开发人员和分析人员使用Elasticsearch的门槛,统一了开发人员和分析人员使用Elasticsearch的方式,提升了Elasticsearch的查询效率。
Description
技术背景
本发明涉及一种SQL查询方法,具体涉及一种基于Presto和Elasticsearch的SQL查询方法。
背景技术
SQL为Structured Query Language的缩写,其为结构化查询语言。Presto是一种数据查询引擎,可对250PB以上的数据进行快速地交互式分析。而Elasticsearch是一个建立在全文搜索引擎Apache Lucene基础上、高可扩展的全文搜索和分析引擎。
Elasticsearch使用Java开发并使用Lucene为核心来实现所有的搜索和索引功能,它允许存储、搜索和分析大量的数据,并且这个过程是近实时的。它通常被用作底层引擎和技术,为复杂的搜索功能和要求提供动力。可以通过JAVA API或者RESTful API的方式与Elasticsearch进行通信,需要注意的是,Java的客户端的版本号必须要与Elasticsearch节点所用的版本号一样,否则它们之间可能无法识别。使用RESTful API的方式需要记住或熟悉Elasticsearch丰富的方法,虽然Elasticsearch功能强大,既适合于搜索也适合于分析、统计等工作,但是缺乏一种较为通用的既适合开发人员又适合分析人员的对接方式。
发明内容
本发明的目的在于提供了一种通用、高效的基于Presto和Elasticsearch的SQL查询方法,其实现了开发人员、分析人员都能使用标准的SQL语言进行快速查询、分析,本发明降低了开发人员和分析人员使用Elasticsearch的门槛,统一了开发人员和分析人员使用Elasticsearch的方式,提升了Elasticsearch的查询效率。
为实现上述目的,本发明采用的技术方案是:
一种基于Presto和Elasticsearch的SQL查询方法,其包括以下步骤:
步骤1、Presto集群的Master节点获取SQL请求,并对SQL请求进行SQL语法检查,只有SQL语法检查通过的情况下才会进行下一步骤,否则SQL请求将被返回给前端;
步骤2、Master节点的解析器接收SQL请求后结合元数据信息,生成具体的查询计划;
步骤3、通过Master节点的调度器将查询计划下发至Elasticsearch集群的各个ES节点以执行相应的请求;同时Master节点的调度器调度Presto集群的各个Worker节点对相应的ES节点进行查询结果的数据请求,各个Worker节点请求到数据后进行计算,并汇总至Master节点;
步骤4、通过Master节点将请求结果数据返回至前端。
所述解析器包括Create Database解析、Drop Database解析、Create table解析、Alter table解析、Drop table解析、Insert解析、Delete解析、Update解析、Select解析、Where字句解析、max解析、min解析、avg解析、count解析、group by解析。
所述前端通过命令行工具、JDBC客户端或图形界面开发工具向Presto集群提交SQL请求。
采用上述方案后,本发明通过Elasticsearch集群进行数据的保存和快速查询,通过Presto集群进行SQL的接收和解析,实现了采用SQL语言对Elasticsearch的查询、分析等操作。本发明的Presto集群接收前端请求的SQL语句,将SQL语句解析成相应的查询计划,该查询计划为方便Elasticsearch执行的JAVA API;然后下发到Elasticsearch集群的各个ES节点执行相应的请求,实现了开发人员、分析人员都能使用标准的SQL语言进行快速查询、分析。本发明降低了开发人员和分析人员使用Elasticsearch的门槛,统一了开发人员和分析人员使用Elasticsearch的方式,提升了Elasticsearch的查询效率。
附图说明
图1为本发明所需的整体系统架构示意图;
图2为本发明中具体的客户端请求处理流程。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
如图1所示,本发明揭示了一种基于Presto和Elasticsearch的SQL查询方法,用户可以通过命令行工具、JDBC客户端或图形界面开发工具向Presto集群提交SQL查询请求,由Presto集群接收并解析SQL请求,将SQL语句解析为Elasticsearch适用的JAVA API,然后下发到Elasticsearch集群的各个ES节点执行相应的请求。
如图2所示,该SQL查询方法具体包括以下步骤:
步骤1、用户通过客户端将SQL请求发送至Presto集群;
步骤2、Presto集群的Master节点获取SQL请求,并对SQL请求进行SQL语法检查,只有SQL语法检查通过的情况下才会进行下一步骤,否则SQL请求将被返回给客户端;
步骤3、Master节点的解析器接收SQL请求后结合元数据信息,生成具体的查询计划;
步骤4、通过Master节点的调度器将查询计划下发至Elasticsearch集群的各个ES节点以执行相应的请求;同时Master节点的调度器调度Presto集群的各个Worker节点对相应的ES节点进行查询结果的数据请求,各个Worker节点请求到数据后进行计算,并汇总至Master节点;
步骤5、通过Master节点将请求结果数据返回至客户端。
上述解析器中至少包括Create Database解析、Drop Database解析、Createtable解析、Alter table解析、Drop table解析、Insert解析、Delete解析、Update解析、Select解析、Where字句解析、max解析、min解析、avg解析、count解析、group by解析。
Create Database解析会将前端传递过来的create database的SQL语句解析为Elasticsearch创建索引的JAVA API,发送给Elasticsearch进行索引的创建。
Drop Database解析会将前端传传递过来的drop database的SQL语句解析为Elasticsearch删除索引的JAVA API,发送给Elasticsearch进行索引的删除操作。
Create Table解析会将前端传递过来的create table的SQL语句解析为Elasticsearch创建type的JAVA API,发送给Elasticsearch进行type的创建。
Alter Table解析会将前端传递过来的alter table的SQL语句解析为Elasticsearch变更type名称的JAVA API,发送给Elasticsearch进行type的变更。
Drop Table解析会将前端传传递过来的drop table的SQL语句解析为Elasticsearch删除type的JAVA API,发送给Elasticsearch进行type的删除操作。
Insert解析会将前端传递过来的insert的SQL语句解析为Elasticsearch新增文档的java api,发送给Elasticsearch进行文档的创建。
Update解析会将前端传传递过来的update的SQL语句解析为Elasticsearch更新文档的java api,发送给Elasticsearch进行文档的更新操作。
Delete解析会将前端传传递过来的delete的SQL语句解析为Elasticsearch删除文档的java api,发送给Elasticsearch进行文档的删除操作。
Select解析会将前端传传递过来的select的SQL语句解析为Elasticsearch搜索文档的java api,发送给Elasticsearch进行文档的搜索操作。
本发明的关键在于,本发明通过Elasticsearch集群进行数据的存储和快速查询,使用Presto集群进行SQL请求的接收和解析,实现了通过SQL语言对Elasticsearch进行快速查询、分析等操作。普通的开发人员或分析人员,只要拥有SQL语言的技能,就可以非常方便的针对Elasticsearch进行管理、查询、分析。
以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (3)
1.一种基于Presto和Elasticsearch的SQL查询方法,其特征在于:包括以下步骤:
步骤1、Presto集群的Master节点获取SQL请求,并对SQL请求进行SQL语法检查,只有SQL语法检查通过的情况下才会进行下一步骤,否则SQL请求将被返回给前端;
步骤2、Master节点的解析器接收SQL请求后结合元数据信息,生成具体的查询计划;
步骤3、通过Master节点的调度器将查询计划下发至Elasticsearch集群的各个ES节点以执行相应的请求;同时Master节点的调度器调度Presto集群的各个Worker节点对相应的ES节点进行查询结果的数据请求,各个Worker节点请求到数据后进行计算,并汇总至Master节点;
步骤4、通过Master节点将请求结果数据返回至前端。
2.根据权利要求1所述的一种基于Presto和Elasticsearch的SQL查询方法,其特征在于:所述解析器包括Create Database解析、Drop Database解析、Create table解析、Altertable解析、Drop table解析、Insert解析、Delete解析、Update解析、Select解析、Where字句解析、max解析、min解析、avg解析、count解析、group by解析。
3.根据权利要求1所述的一种基于Presto和Elasticsearch的SQL查询方法,其特征在于:所述前端通过命令行工具、JDBC客户端或图形界面开发工具向Presto集群提交SQL请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710900972.XA CN107729428A (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的SQL查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710900972.XA CN107729428A (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的SQL查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729428A true CN107729428A (zh) | 2018-02-23 |
Family
ID=61208779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710900972.XA Pending CN107729428A (zh) | 2017-09-28 | 2017-09-28 | 一种基于Presto和Elasticsearch的SQL查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729428A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108520037A (zh) * | 2018-03-30 | 2018-09-11 | 新华三大数据技术有限公司 | 数据查询方法、装置及数据可视化系统 |
CN109408580A (zh) * | 2018-10-31 | 2019-03-01 | 北京百分点信息科技有限公司 | 一种跨数据源的sql编译装置及方法 |
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN110399386A (zh) * | 2019-07-15 | 2019-11-01 | 南威软件股份有限公司 | 一种基于Presto的SQL UPDATE方法及控制系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170270162A1 (en) * | 2016-03-17 | 2017-09-21 | Electronics And Telecommunications Research Institute | Query optimization method in distributed query engine and apparatus thereof |
-
2017
- 2017-09-28 CN CN201710900972.XA patent/CN107729428A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170270162A1 (en) * | 2016-03-17 | 2017-09-21 | Electronics And Telecommunications Research Institute | Query optimization method in distributed query engine and apparatus thereof |
Non-Patent Citations (3)
Title |
---|
梁满 等: "" 基于Presto海量日志分析系统的设计"", 《黑龙江科技信息》 * |
王晓明: ""大数据架构选型与PRESTO实践"", 《百度文库》 * |
许鹏: ""Elasticsearch hadoop使用示例 & 运维实战之集"", 《HTTPS://DEVELOPER.ALIYUN.COM/ARTICLE/60649》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108520037A (zh) * | 2018-03-30 | 2018-09-11 | 新华三大数据技术有限公司 | 数据查询方法、装置及数据可视化系统 |
CN108520037B (zh) * | 2018-03-30 | 2019-10-18 | 新华三大数据技术有限公司 | 数据查询方法、装置及数据可视化系统 |
CN109408580A (zh) * | 2018-10-31 | 2019-03-01 | 北京百分点信息科技有限公司 | 一种跨数据源的sql编译装置及方法 |
CN109739882A (zh) * | 2019-01-04 | 2019-05-10 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据查询优化方法 |
CN110399386A (zh) * | 2019-07-15 | 2019-11-01 | 南威软件股份有限公司 | 一种基于Presto的SQL UPDATE方法及控制系统 |
CN110399386B (zh) * | 2019-07-15 | 2022-05-10 | 南威软件股份有限公司 | 一种基于Presto的SQL UPDATE方法及控制系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642832B1 (en) | Reducing the domain of a subquery by retrieving constraints from the outer query | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
US9798772B2 (en) | Using persistent data samples and query-time statistics for query optimization | |
US8103705B2 (en) | System and method for storing text annotations with associated type information in a structured data store | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106294478B (zh) | 数据仓库的数据处理方法及装置 | |
CN107729428A (zh) | 一种基于Presto和Elasticsearch的SQL查询方法 | |
US20200334252A1 (en) | Clause-wise text-to-sql generation | |
CN104036007B (zh) | 一种分布式数据库查询方法及装置 | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN110222110A (zh) | 一种基于etl工具的资源描述框架数据转换存储一体化方法 | |
US11461333B2 (en) | Vertical union of feature-based datasets | |
KR20100117415A (ko) | 데이터베이스 관리 방법 및 시스템 | |
CN102819600B (zh) | 面向电力生产管理系统关系数据库的关键词搜索方法 | |
CN109739882B (zh) | 一种基于Presto和Elasticsearch的大数据查询优化方法 | |
US8489631B2 (en) | Distributing a query | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
US9063957B2 (en) | Query systems | |
CN109542930A (zh) | 一种基于ElasticSearch的数据高效检索方法 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
Moussa | Tpc-h benchmarking of pig latin on a hadoop cluster | |
CN110147396B (zh) | 一种映射关系生成方法及装置 | |
JP2001236352A (ja) | 半構造化文書検索方法及び装置及び半構造化文書検索プログラムを格納した記憶媒体 | |
Dede et al. | Scalable and distributed processing of scientific XML data | |
US20180218021A1 (en) | Scalable fine grained access conrol within a search engine |
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: 20180223 |