CN107368477B - 基于HBase协处理器的类SQL查询的方法和系统 - Google Patents
基于HBase协处理器的类SQL查询的方法和系统 Download PDFInfo
- Publication number
- CN107368477B CN107368477B CN201610308094.8A CN201610308094A CN107368477B CN 107368477 B CN107368477 B CN 107368477B CN 201610308094 A CN201610308094 A CN 201610308094A CN 107368477 B CN107368477 B CN 107368477B
- Authority
- CN
- China
- Prior art keywords
- hbase
- query
- sql
- layer service
- regionserver
- 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.)
- Active
Links
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/2457—Query processing with adaptation to user needs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于HBase协处理器的类SQL查询的方法和系统,能够规范统一查询的条件及返回的结果,并能在避免对上层业务侵入的同时,执行高性能的实时数据并行计算。该方法包括:在HBase客户端预先配置HBase存储的表的元数据;建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;所述HBase客户端将所述查询请求分发至RegionServer;所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;所述HBase客户端合并由所述RegionServer返回的数据并封装结果集。
Description
技术领域
本发明涉及计算机技术及软件领域,尤其涉及一种基于HBase协处理器的类SQL查询的方法和系统。
背景技术
近年来,电商行业不断发展,对于大数据的存储、抽取、计算、分析以及展示越来越受到各大电商的关注。随着电商数据的爆炸性增长及对大数据处理分析的迫切需求,同时由于数据存储空间与数据访问时间之间的矛盾,各大电商选择分布式的存储系统HBase(HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统)来对数据进行存储,以满足对数据高效的插入和读取操作。
但是由于业务需求的多样化,导致了针对HBase的原生API查询条件以及对其查询所得到的Key-Value数据模型趋于多元化、差异化,无法使得上层业务以一种统一的、规范的形式来进行对HBase数据的查询和计算;另外,单纯的使用HBase原生API来进行HBase的查询,并将查询所得到的数据在客户端进行单节点的计算,会导致了HBase资源没有充分利用且计算效率低下等问题。
目前,针对HBase上的查询引擎解决方案,根据与HBase的操作方式,可以分为两种:一种是以Map-Reduce为核心,结合Map-Reduce思想,单个任务使用HBase-Client API原始接口访问,以Hive SQL为代表;另一种是以HBase-Coprocessor为核心,结合GoogleDremel的思想,客户端合并多个节点的处理结果,以Phoenix为核心。
但是上述两种方式中,由于Hive基于Map-Reduce思想,数据查询响应时间长,实时性较差,在较小的数量级上的数据查询及计算的效率较低;而Phoenix对HBase有着极强的侵入性,其创建的表HBase可以识别并使用,但是使用HBase创建的表,Phoenix不能识别,因此无法应对现有线上HBase数据表的业务需求。故现有的针对HBase的查询方式并不能解决现有HBase查询过程中无法应对业务需求多样化需求及查询效率低下、HBase资源不能充分利用的问题。
发明内容
有鉴于此,本发明提供一种基于HBase协处理器的类SQL查询的方法和系统,能够规范统一查询的条件及返回的结果,并能在避免对上层业务侵入的同时,执行高性能的实时数据并行计算。
为实现上述目的,根据本发明的一个方面,提供了一种基于HBase协处理器的类SQL查询的方法。
本发明的基于HBase协处理器的类SQL查询的方法包括:在HBase客户端预先配置HBase存储的表的元数据;建立从上层业务接入连接,解析上层业务传入的SQL查询语句,生成查询请求;所述HBase客户端将所述查询请求分发至RegionServer;所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;所述HBase客户端合并由所述RegionServer返回的数据并封装结果集。
可选地,所述上层业务接入连接采用JDBC连接方式。
可选地,解析从上层业务传入的SQL查询语句还包括:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
可选地,所述HBase客户端将所述查询请求分发至RegionServer还包括:根据Rowkey信息将所述查询请求分发至所述RegionServer。
可选地,所述HBase客户端封装结果集由行聚合而成,行则由列聚合而成。
为实现上述目的,根据本发明的另一方面,提供一种基于HBase协处理器的类SQL查询的系统。
本发明的基于HBase协处理器的类SQL查询的系统包括:配置模块,用于在HBase客户端预先配置HBase存储的表的元数据;上层业务连接模块,用于建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;以及HBase,其中,在HBase中,所述HBase客户端将所述查询请求分发至RegionServer;所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;所述HBase客户端合并由所述RegionServer返回的数据并封装结果集。
可选地,所述上层业务连接模块还用于采用JDBC连接方式为上层业务提供接入连接。
可选地,所述上层业务连接模块还用于:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
可选地,所述HBase客户端还用于:根据Rowkey信息将所述查询请求分发至所述RegionServer。
可选地,所述HBase客户端封装结果集由行聚合而成,行则由列聚合而成。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的基于HBase协处理器的类SQL查询的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的基于HBase协处理器的类SQL查询的方法。
根据本发明的技术方案,通过预先对表的元数据进行定义,从而可以在保证对HBase的无侵入性的同时,实现对HBase存储的任意的表使用类SQL查询方式;通过使用以上层业务连接池、JDBC连接、SQL解析器以及HBase客户端等组成的HBase查询引擎隔离数据与上层业务,从而可以统一上层业务对HBase的查询过程及结果获得;通过利用HBase协处理器以一种数据并行计算的方式进行数据查询和处理,从而可以提高在大数据量的情况下对数据过滤及计算的效率。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种基于HBase协处理器的类SQL查询的方法的主要步骤的示意图;
图2是根据本发明实施例的一种基于HBase协处理器的类SQL查询的方法的数据逻辑模型层架构的示意图;
图3是根据本发明实施例的一种基于HBase协处理器的类SQL查询的方法中解析上层业务传入的SQL查询语句的主要流程的示意图;
图4是根据本发明实施例的一种基于HBase协处理器的类SQL查询的方法中利用HBase协处理器并行查询和处理数据的主要流程的示意图;
图5是根据本发明实施例的一种基于HBase协处理器的类SQL查询的系统的主要部分的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明的具体实施方式是以一种类SQL(SQL是一种关系型数据库的查询语言,类SQL语法类似于SQL但不可覆盖真正的SQL。此处的类SQL是对上层业务对下层HBase数据统一查询的描述)的形式对HBase存储的数据进行计算及查询,规范统一查询的条件及结果,并且通过HBase协处理器执行高性能的实时数据并行计算,同时避免对上层业务的侵入性。
图1是根据本发明实施例的一种基于HBase协处理器的类SQL查询的方法的主要步骤的示意图。
如图1所示,本发明实施例的一种基于HBase协处理器的类SQL查询的方法主要包括如下步骤:
步骤S11:在HBase客户端预先配置HBase存储的表的元数据;
步骤S12:建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;
步骤S13:所述HBase客户端将所述查询请求分发至RegionServer;
步骤S14:所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;
步骤S15:所述HBase客户端合并由所述RegionServer返回的数据并封装结果集。
HBase中存储的表数据,在HBase中的存储形式为Byte,需要通过元数据还原HBase中的业务数据,也就是将Byte格式的数据转化为相应的数据类型的数据,如Byte到int或者string等基本类型。本发明实施例中,HBase存储的表的元数据可以是预先配置在HBase客户端的,如此,可以实现在查询数据的时候,元数据的获取并不依赖HBase存储系统。
另外,上层业务接入连接可采用JDBC连接方式。
此外,解析上层业务传入的SQL查询语句还可以包括:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
如图2所示,本发明实施例中,上述查询方法的数据逻辑模型层架构整体可分为两层:HBase查询引擎和HBase存储系统。
HBase查询引擎对上层业务应用提供JDBC的连接方式,并对上层业务传入的SQL语句通过SQL解析器(SQL Parser)对SQL进行语法分析,将SQL分析为SQL Query Plan。常规的查询任务在HBase客户端层会将SQL Query Plan直接解析为HBase API实现,对HBase进行数据请求。
HBase存储系统分为Master节点,RegionServer节点和底层存储。其中Master节点主要监控集群中的所有RegionServer,并根据上层解析的HBase API依照Rowkey的规则将其分发到各个RegionServer上。RegionServer向底层存储请求获得数据,并通过HBase协处理器Coprocessor对数据依次执行扫描、过滤以及数据聚合等操作处理。
最后HBase查询引擎的客户端再对已经过HBase协处理器Coprocessor处理完毕的数据进行收集、归并计算以及封装操作。具体模型架构见图2。
在本发明具体实施例中,解析上层业务传入的SQL查询语句,即类SQL解析的过程主要包括:首先,对SQL语句执行预处理,包括表、列、类型的预处理等;其次,对SQL语句进行词法和语法分析并生成相应的SQL查询对象,即为HBase Query Plan,等待分发。具体流程如图3所示。
本发明实施例的分发查询请求的过程中,HBase客户端与Master进行通信,依照Rowkey信息将已经解析好的HBase Query Plan分发到相应的RegionServer上,并告知RegionServer通过使用事先已经加载好的HBase协处理器的Calculate Protocol来执行数据的处理。
本发明实施例中,HBase客户端首先可以根据业务需求对Query Plan进行分类,例如可以分为三类,包含聚合操作的为一类,不包含聚合且包含排序操作的为一类,两者都不包含的为一类。其中,前两者的数据的过滤与计算通过协处理器来执行。由于数据分布式存储的特性,数据在HBase协处理器Coprocessor执行完会传输到HBase客户端进行数据合并,在合并的过程中,需要对数据进行二次加工并封装。具体的RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据的过程如图4所示。
HBase客户端对结果集进行封装并返回。本发明实施例中对于结果集的封装,可以是结果集ResultSet由行Row聚合而成,行Row则由列Column聚合而成。这样的结果集的模型设计便于列Column之间的算术运算以及行Row之间的比较运算。同时也将HBase查询引擎从HBase存储系统所查询获取的键值对(Key-Value)结果集转化为了关系型结果集,完成了数据模型由Key-Value型数据逻辑模型到关系型数据逻辑模型的转化,统一了数据结果的规范。
根据本发明实施例的基于HBase协处理器的类SQL查询方法可以看出,通过预先对表的元数据进行定义,从而可以在保证对HBase的无侵入性的同时,实现对HBase存储的任意的表使用类SQL查询方式;通过使用以上层业务连接池、JDBC连接、SQL解析器以及HBase客户端等组成的HBase查询引擎隔离数据与上层业务,从而可以统一上层业务对HBase的查询过程及结果获得;通过利用HBase协处理器以一种数据并行计算的方式进行数据查询和处理,从而可以提高在大数据量的情况下对数据过滤及计算的效率。
图5是根据本发明实施例的一种基于HBase协处理器的类SQL查询的系统的主要部分的示意图。
如图5所示,本发明实施例的一种基于HBase协处理器的类SQL查询的系统50主要包括如下部分:
配置模块501,用于在HBase客户端预先配置HBase存储的表的元数据;
上层业务连接模块502,用于建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;以及
HBase503,其中,在HBase503中,
所述HBase客户端将所述查询请求分发至RegionServer;
所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;
所述HBase客户端合并由所述RegionServer返回的数据并封装结果集。
上层业务连接模块502还可用于采用JDBC连接方式为上层业务提供接入连接。
上层业务连接模块502还可用于对SQL语句进行解析,包括:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
在HBase503中,其中HBase客户端还可用于:根据Rowkey信息将查询请求分发至所述RegionServer。
HBase客户端封装结果集可以是由行Row聚合而成,行Row则由列Column聚合而成。
从以上描述可以看出,通过预先对表的元数据进行定义,从而可以在保证对HBase的无侵入性的同时,实现对HBase存储的任意的表使用类SQL查询方式;通过使用以上层业务连接池、JDBC连接、SQL解析器以及HBase客户端等组成的HBase查询引擎隔离数据与上层业务,从而可以统一上层业务对HBase的查询过程及结果获得;通过利用HBase协处理器以一种数据并行计算的方式进行数据查询和处理,从而可以提高在大数据量的情况下对数据过滤及计算的效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种基于HBase协处理器的类SQL查询的方法,其特征在于,包括:
在HBase客户端预先配置HBase存储的表的元数据,通过元数据还原HBase中的业务数据;
通过HBase查询引擎建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;
所述HBase客户端将所述查询请求分发至RegionServer;
所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;
所述HBase客户端合并由所述RegionServer返回的数据并封装结果集;其中,所述结果集由行聚合而成,行则由列聚合而成。
2.根据权利要求1所述的方法,其特征在于,所述上层业务接入连接采用JDBC连接方式。
3.根据权利要求1所述的方法,其特征在于,解析从上层业务传入的SQL查询语句还包括:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
4.根据权利要求1所述的方法,其特征在于,所述HBase客户端将所述查询请求分发至RegionServer还包括:根据Rowkey信息将所述查询请求分发至所述RegionServer。
5.一种基于HBase协处理器的类SQL查询的系统,其特征在于,包括:
配置模块,用于在HBase客户端预先配置HBase存储的表的元数据,通过元数据还原HBase中的业务数据;
上层业务连接模块,用于通过HBase查询引擎建立上层业务接入连接,解析从上层业务传入的SQL查询语句,生成查询请求;以及
HBase,其中,在所述HBase中,
所述HBase客户端将所述查询请求分发至RegionServer;
所述RegionServer根据所述查询请求利用HBase协处理器并行查询和处理数据;
所述HBase客户端合并由所述RegionServer返回的数据并封装结果集;其中,所述结果集由行聚合而成,行则由列聚合而成。
6.根据权利要求5所述的系统,其特征在于,所述上层业务连接模块还用于采用JDBC连接方式为上层业务提供接入连接。
7.根据权利要求5所述的系统,其特征在于,所述上层业务连接模块还用于:接收业务端的SQL查询语句,对SQL查询语句进行预处理,并通过词法、语法分析生成SQL查询请求。
8.根据权利要求5所述的系统,其特征在于,所述HBase客户端还用于:根据Rowkey信息将所述查询请求分发至所述RegionServer。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308094.8A CN107368477B (zh) | 2016-05-11 | 2016-05-11 | 基于HBase协处理器的类SQL查询的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308094.8A CN107368477B (zh) | 2016-05-11 | 2016-05-11 | 基于HBase协处理器的类SQL查询的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368477A CN107368477A (zh) | 2017-11-21 |
CN107368477B true CN107368477B (zh) | 2021-02-26 |
Family
ID=60303454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610308094.8A Active CN107368477B (zh) | 2016-05-11 | 2016-05-11 | 基于HBase协处理器的类SQL查询的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368477B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280123B (zh) * | 2017-12-11 | 2021-12-21 | 西安烽火软件科技有限公司 | 一种HBase的列聚合方法 |
CN112069179A (zh) * | 2020-08-31 | 2020-12-11 | 银盛支付服务股份有限公司 | 一种基于Hbase查询性能优化的装置及其方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1920324A1 (en) * | 2005-08-19 | 2008-05-14 | Nxp B.V. | Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation |
JP2012242539A (ja) * | 2011-05-18 | 2012-12-10 | Renesas Electronics Corp | セキュリティシステム及びマイクロコンピュータ |
CN102707924B (zh) * | 2012-05-02 | 2015-06-10 | 广州中大微电子有限公司 | 一种rfid智能卡芯片的rsa协处理器 |
CN104462161A (zh) * | 2013-10-18 | 2015-03-25 | 上海宝信软件股份有限公司 | 基于分布式数据库的结构化数据查询方法 |
CN103646051B (zh) * | 2013-11-27 | 2017-02-08 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理系统及方法 |
CN103646073A (zh) * | 2013-12-11 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于HBase表的条件查询优化方法 |
CN104750757B (zh) * | 2013-12-31 | 2018-05-08 | 中国移动通信集团公司 | 一种基于HBase的数据存储方法和设备 |
CN104112013A (zh) * | 2014-07-17 | 2014-10-22 | 浪潮(北京)电子信息产业有限公司 | HBase二级索引方法及装置 |
CN104346447A (zh) * | 2014-10-28 | 2015-02-11 | 浪潮电子信息产业股份有限公司 | 一种面向混合型大数据处理系统的分区连接方法 |
CN104391957A (zh) * | 2014-12-01 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种针对混合型大数据处理系统的数据交互分析方法 |
CN105117433A (zh) * | 2015-08-07 | 2015-12-02 | 北京思特奇信息技术股份有限公司 | 一种基于Hive解析HFile统计查询HBase的方法和系统 |
CN105069151A (zh) * | 2015-08-24 | 2015-11-18 | 用友网络科技股份有限公司 | HBase二级索引构建装置和方法 |
-
2016
- 2016-05-11 CN CN201610308094.8A patent/CN107368477B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107368477A (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713247B2 (en) | Executing queries for structured data and not-structured data | |
CN107291947B (zh) | 一种半结构化数据查询的方法和分布式NewSQL数据库系统 | |
US10311055B2 (en) | Global query hint specification | |
US20210165782A1 (en) | Managed materialized views created from heterogeneous data sources | |
US10095732B2 (en) | Scalable analysis platform for semi-structured data | |
EP3285178B1 (en) | Data query method in crossing-partition database, and crossing-partition query device | |
US9418101B2 (en) | Query optimization | |
CN108009236A (zh) | 一种大数据查询方法、系统、计算机及存储介质 | |
US11074261B1 (en) | Format independent processing for distributed data | |
US11321330B1 (en) | Combining nested data operations for distributed query processing | |
CN103646073A (zh) | 一种基于HBase表的条件查询优化方法 | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN107066546B (zh) | 一种基于mpp引擎的跨数据中心快速查询方法和系统 | |
CN108228743A (zh) | 一种实时大数据搜索引擎系统 | |
CN104133858A (zh) | 基于列存储的智能双引擎分析系统及方法 | |
CN108108466A (zh) | 一种分布式系统日志查询分析方法及装置 | |
CN107368477B (zh) | 基于HBase协处理器的类SQL查询的方法和系统 | |
US10592506B1 (en) | Query hint specification | |
US20170068703A1 (en) | Local database cache | |
KR20100132752A (ko) | 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템 | |
CN108319604B (zh) | 一种hive中大小表关联的优化方法 | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN110245184B (zh) | 一种基于tagSQL的数据处理方法、系统及装置 | |
US20180032591A1 (en) | Integration management for structured and unstructured data | |
CN103942249A (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 |