CN107729428A - 一种基于Presto和Elasticsearch的SQL查询方法 - Google Patents

一种基于Presto和Elasticsearch的SQL查询方法 Download PDF

Info

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
Application number
CN201710900972.XA
Other languages
English (en)
Inventor
张木辉
蔡剑齐
林金儒
黄思伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Linewell Software Co Ltd
Original Assignee
Linewell Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN201710900972.XA priority Critical patent/CN107729428A/zh
Publication of CN107729428A publication Critical patent/CN107729428A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query 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

一种基于Presto和Elasticsearch的SQL查询方法
技术背景
本发明涉及一种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请求。
CN201710900972.XA 2017-09-28 2017-09-28 一种基于Presto和Elasticsearch的SQL查询方法 Pending CN107729428A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
梁满 等: "" 基于Presto海量日志分析***的设计"", 《黑龙江科技信息》 *
王晓明: ""大数据架构选型与PRESTO实践"", 《百度文库》 *
许鹏: ""Elasticsearch hadoop使用示例 & 运维实战之集"", 《HTTPS://DEVELOPER.ALIYUN.COM/ARTICLE/60649》 *

Cited By (6)

* Cited by examiner, † Cited by third party
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
CN107729428A (zh) 一种基于Presto和Elasticsearch的SQL查询方法
US20200334252A1 (en) Clause-wise text-to-sql generation
CN104036007B (zh) 一种分布式数据库查询方法及装置
CN106294695A (zh) 一种面向实时大数据搜索引擎的实现方法
CN110909016B (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) 大数据查询方法及大数据查询装置
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
CN101576897A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180223