CN111125178A - 一种数据查询方法、装置、终端、presto查询引擎及存储介质 - Google Patents
一种数据查询方法、装置、终端、presto查询引擎及存储介质 Download PDFInfo
- Publication number
- CN111125178A CN111125178A CN201811279323.3A CN201811279323A CN111125178A CN 111125178 A CN111125178 A CN 111125178A CN 201811279323 A CN201811279323 A CN 201811279323A CN 111125178 A CN111125178 A CN 111125178A
- Authority
- CN
- China
- Prior art keywords
- query
- request
- time
- time period
- data
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据查询方法、装置、终端、presto查询引擎及存储介质,该方法包括:获取查询条件,查询条件包括查询字段及查询时间段;若部分查询时间段距当前时间处于预定时间内,将查询时间段划分为距当前时间处于预定时间内的第一时间段,和距当前时间超出预定时间的第二时间段;根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;联合第一请求和第二请求生成目标查询请求;向presto查询引擎提交目标查询请求。本发明实施例可便于presto查询引擎针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,为提升数据查询效率提供了可能。
Description
技术领域
本发明实施例涉及数据查询技术领域,具体涉及一种数据查询方法、装置、终端、presto查询引擎及存储介质。
背景技术
presto作为开源的分布式SQL(Structured Query Language,结构化查询语句)查询引擎,其查询的速度可达到商业数据仓库的级别,利用presto的性能实现数据源中的数据查询,无疑是提高数据查询效率的较好解决方式。
然而,随着数据源存储的数据量增多,使用presto进行数据查询也面临着挑战,例如,如何进一步提升数据查询效率。
发明内容
有鉴于此,本发明实施例提供一种数据查询方法、装置、终端、presto查询引擎及存储介质,以进一步提升数据查询效率。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据查询方法,包括:
获取查询条件,所述查询条件包括查询字段及查询时间段;
若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
联合第一请求和第二请求生成目标查询请求;
向presto查询引擎提交目标查询请求。
本发明实施例还提供一种数据查询方法,包括:
获取目标查询请求,所述目标查询请求由查询第一数据源的第一请求和查询第二数据源的第二请求联合得到;
根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;
执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;所述第一时间段为目标查询请求的查询时间段中距当前时间处于预定时间内的部分,所述第二时间段为所述查询时间段中距当前时间超出预定时间的部分;
汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果;
向终端反馈所述目标查询结果。
本发明实施例还提供一种数据查询装置,包括:
查询条件获取模块,用于获取查询条件,所述查询条件包括查询字段及查询时间段;
时间段划分模块,用于若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
请求生成模块,用于根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
请求联合模块,用于联合第一请求和第二请求生成目标查询请求;
请求提交模块,用于向presto查询引擎提交目标查询请求。
本发明实施例还提供一种终端,包括至少一个存储器和至少一个处理芯片;所述存储器存储有程序,所述处理芯片执行所述程序,以实现上述所述的数据查询方法。
本发明实施例还提供一种存储介质,所述存储介质存储有执行上述所述的数据查询方法的程序。
本发明实施例还提供一种presto查询引擎,包括:
调度节点,用于获取目标查询请求,所述目标查询请求由查询第一数据源的第一请求和查询第二数据源的第二请求联合得到;根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;及向终端反馈目标查询请求相应的目标查询结果;
工作节点,用于执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果;汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果;
其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;所述第一时间段为目标查询请求的查询时间段中距当前时间处于预定时间内的部分,所述第二时间段为查询时间段中距当前时间超出预定时间的部分。
本发明实施例基于第一数据源存储数据收集时间距当前时间处于预定时间内的数据,及第二数据源存储数据收集时间距当前时间超出预定时间的数据的存储特性,在终端构造目标查询请求时,可将查询时间段划分为距当前时间处于预定时间内的第一时间段,及距当前时间超出预定时间的第二时间段;从而基于第一时间段构造出查询第一数据源的第一请求,基于第二时间段构造出查询第二数据源的第二请求,进而联合第一请求和第二请求生成目标查询请求。本发明实施例可在发往presto查询引擎的目标查询请求中,高效、准确的划分针对第一数据源和第二数据源的查询信息,以便于presto查询引擎针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,为提升数据查询效率提供了可能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的数据查询系统的示例架构图;
图2为本发明实施例提供的数据查询方法的流程图;
图3为本发明实施例提供的数据查询方法的另一流程图;
图4为本发明实施例提供的数据查询方法的再一流程图;
图5为本发明实施例提供的应用示例图;
图6为本发明实施例提供的数据查询装置的结构框图;
图7为本发明实施例提供的数据查询装置的另一结构框图;
图8为本发明实施例提供的数据查询装置的再一结构框图;
图9为本发明实施例提供的终端的硬件结构框图。
具体实施方式
presto连接的数据源的数据是不断产生的,例如,埋点(一种数据采集技术)会不停的采集数据并存储到数据源中;因此在进行数据查询时,既要保障查询结果的实时性也要保障查询结果的全面性,这就对使用presto查询数据的查询效率提出了进一步的要求。
基于此,本发明实施例利用presto可对接多个数据源的能力,设置presto连接第一数据源和第二数据源,第一数据源和第二数据源可以是presto对接的任意两个不同的数据源,作为一种示例,第一数据源可以包括kafka数据源,第二数据源可以包括hive(hive是一种基于hadoop的数据仓库工具)数据源;
在本发明实施例中,实时数据可存储入第一数据源(实时数据可以是实时采集的数据),并且第一数据源可保留数据采集时间距当前时间处于预定时间内的数据;数据采集时间距当前时间超出预定时间的数据,将由第一数据源转移存储到第二数据源。
基于上述设置,本发明实施例提供一种改进的数据查询方法,以进一步提升数据查询效率。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的数据查询系统的一种示例架构图,如图1所示,数据查询系统可以包括:终端10,presto查询引擎20,第一数据源30和第二数据源40。
终端10可以是用户侧的用户设备,例如手机、平板电脑、笔记本电脑等;在使用presto的场景下,终端10可以设置presto客户端,并通过presto客户端与presto查询引擎20实现交互;终端10主要用于生成查询请求,并向presto查询引擎20提交查询请求(如SQL语句),以获取到presto查询引擎20反馈的相应查询结果。
presto查询引擎20的一种示例架构可如图1所示,包括:调度节点(Coordinator)21,多个工作节点(Worker)22;其中,调度节点21主要用于解析查询请求(如SQL语句),生成查询执行计划、stage和查询任务(task),并对生成的查询任务进行调度;工作节点22主要用于执行查询任务,从第一数据源30和第二数据源40获取相应的查询结果;
图1示出的presto查询引擎20的架构仅是简化示例,其是为便于说明本发明实施例提供的方案,presto查询引擎20还可包括图1未示出的其他部件;例如,presto查询引擎可以具有对接数据源的连接器(connector),一个连接器对应一个数据源,工作节点22可通过各连接器访问各连接器对应的数据源;又如,presto查询引擎20中还可存在提供数据源元信息的元数据存储节点(MetaStore)等。
第一数据源30可以是presto查询引擎20所连接的任一数据源;示例的,第一数据源30可以是kafka数据源,kafka是一种高吞吐量的能够提供实时数据的分布式发布订阅消息系统;
在本发明实施例中,第一数据源30可存储实时数据,如埋点采集的实时数据可存储入第一数据源;并且第一数据源30中存储的数据具有存储时限,在一种可选实现中,本发明实施例可设置存储时限相应的预定时间,第一数据源30中数据采集时间距当前时间处于预定时间内的数据可保留存储,而数据采集时间距当前时间超出预定时间的数据需转移到第二数据源30中存储;
需要说明的是,上述所指的预定时间可以根据实际应用情况设置,例如预定时间可设置为一定的天数,也可以设置为一定的时长范围;上述所指的当前时间可以是当前日期,也可以是当前时刻,可视实际应用情况设置;
作为一种示例,第一数据源30可保留存储数据采集时间在2天内的数据,数据采集时间超出2天的数据将从第一数据源30转移到第二数据源40中存储。
第二数据源40可以是presto查询引擎20所连接的与第一数据源30不同的数据源;示例的,第二数据源40可以是hive数据源,hive可以将结构化的数据文件映射为数据库表,并提供简单的SQL查询功能,并可以将SQL语句转换为MapReduce任务进行运行;
可选的,第二数据源40可以接收由第一数据源30转移出的数据,即第二数据源40可存储数据采集时间距当前时间超出预定时间的数据;在一种示例中,对于数据采集时间距当前时间超出预定时间的数据,kafka数据源可通过hadoop并行数据加载方式,将数据转移到hive数据源存储。
基于本发明实施例提供的第一数据源和第二数据源的数据存储特性,为在查询数据时,保障查询结果的实时性和全面性,并进一步提升查询效率,本发明实施例在进行数据查询时,可从第一数据源查询数据采集时间距当前时间处于预定时间内的数据,保障查询结果的实时性,从第二数据源查询数据采集时间距当前时间超出预定时间的数据,保障查询结果的全面性,从而在保障查询结果的实时性和全面性的情况下,实现数据查询;
并且,为提升从第一数据源查询数据和从第二数据源查询数据的效率,本发明实施例可在终端构造发往presto查询引擎的目标查询请求时,基于查询时间段构造查询第一数据源的第一请求,及查询第二数据源的第二请求,从而联合第一请求和第二请求构造出目标查询请求;进而在目标查询请求发往presto查询引擎后,presto查询引擎的调度节点可解析目标查询请求,生成针对第一请求的第一查询任务和针对第二请求的第二查询任务,并将针对第一请求的第一查询任务和针对第二请求的第二查询任务交由工作节点并行处理,从而使得针对第一数据源和第二数据源的查询划分更为高效和准确,为提升数据查询效率提供了可能。
作为本发明实施例公开内容的一种可选实现,结合终端和presto查询引擎的角度,图2示出了本发明实施例提供的数据查询方法的一种可选流程,参照图2,该流程可以包括:
步骤S10、终端获取查询条件,所述查询条件包括查询字段及查询时间段。
可选的,查询条件可以由用户输入,如终端可运行presto客户端,用户可在presto客户端的查询页面输入查询条件;查询条件可以包括查询字段及查询时间段。
查询字段可以是非时间的查询条件,可由用户在presto客户端的查询页面输入;查询字段的字段名(称为查询字段名)包括但不限于:内容关键词、主题、地域、相关人员姓名或编号(以教育数据为例,相关人员可以是讲师、学员等)等;其中,一个查询字段名可以对应一个字段类型。
查询时间段可以由用户输入,如用户可在presto客户端的查询页面的时间选择项中选择查询时间段;示例的,查询时间段可以包括查询起始时间和查询结束时间;例如,查询时间段可以是20170703至20180703,其中20170703可以认为是查询起始时间,20180703可以认为是查询结束时间,相应的,可查询20170703至20180703的数据;
在另一示例中,查询时间可以是查询结束时间以前的时间段;例如,查询时间可以小于20180703,20180703可以认为是查询结束时间,相应的,可查询20180703以前的数据;
可选的,上述说明中查询结束时间可选择为当前时间(如自动选定),也可选择为历史时间(如用户选定的历史时间)。
步骤S11、若终端判断部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间。
在本发明实施例中,第一数据源可存储实时数据,即第一数据源可存储数据采集时间距当前时间处于预定时间内的数据,第二数据源可存储数据采集时间距当前时间超出预定时间的数据;为提升数据查询效率,终端在构造查询请求时,可划分出查询第一数据源的查询请求(称为第一请求)和查询第二数据源的查询请求(称为第二请求);
可以理解的是,查询第一数据源的第一请求所对应的查询时间应距当前时间处于预定时间内,而查询第二数据源的第二请求所对应的查询时间应距当前时间超出预定时间;
基于此,本发明实施例在获取查询时间段后,可判断查询时间段是否具有距当前时间处于预定时间内的部分;若是,则可划分查询时间段,即将查询时间段划分为距当前时间处于预定时间内的第一时间段,和距当前时间超出预定时间的第二时间段,以便后续针对第一时间段生成第一请求,针对第二时间段生成第二请求,从而为提升数据查询效率提供可能;若否,则全部查询时间段距当前时间超出预定时间,或者全部查询时间段距当前时间处于预定时间内;
如果全部查询时间段距当前时间超出预定时间,则可根据查询时间段和查询字段直接生成查询第二数据源的查询请求,并提交该查询请求;如果全部查询时间段距当前时间处于预定时间内,则可根据查询时间段和查询字段直接生成查询第一数据源的查询请求,并提交该查询请求。
可选的,终端可判断查询起始时间和查询结束时间是否距当前时间处于预定时间内;如果查询起始时间距当前时间超出预定时间,且查询结束时间距当前时间处于预定时间内,则确定部分查询时间段距当前时间处于预定时间内;如果查询起始时间及查询结束时间距当前时间均处于预定时间内,则确定全部查询时间段距当前时间处于预定时间内;如果查询起始时间及查询结束时间距当前时间均不处于预定时间内,则确定全部查询时间段距当前时间超出预定时间。
可选的,在将查询时间段划分为第一时间段和第二时间段时,本发明实施例可确定查询时间段中距当前时间处于预定时间内的时间分界点,将时间分界点至查询结束时间对应的时间段作为第一时间段,将查询起始时间至时间分界点对应的时间段作为第二时间段;
示例的,以当前时间为当前日期,预定时间为2天为例,则第一数据源可存储2天内采集的数据,超出2天的数据将存储到第二数据源;若当前日期为20180703,查询时间段为20180703以前的时间段,则查询时间段可以划分为第一时间段(20180702至20180703)和第二时间段(20180702以前的时间段),即第一时间段≥(大于等于)20180702,第二时间段<(小于)20180702;全部查询时间段距当前时间处于预定时间内,及全部查询时间段距当前时间超出预定时间的情况同理示例,不再展开说明。
步骤S12、终端根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求。
在将查询时间段划分为第一时间段和第二时间段后,第一时间段可针对第一数据源,第二时间段可针对第二数据源;
一方面,本发明实施例可根据第一时间段和查询字段,生成查询第一数据源的第一请求;第一请求可指示,查询第一数据源中与第一时间段及查询字段相应的数据;示例的,可在第一请求中指示查询数据源与第一数据源相应,查询条件与第一时间段及查询字段相应;
可选的,第一请求可以是SQL语句形式,本发明实施例可将第一时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第一SQL语句,并在第一SQL语句中指示查询数据源与第一数据源相应,从而生成第一请求;第一SQL语句可以是第一请求的一种可选形式。
另一方面,本发明实施例可根据第二时间段和查询字段,生成查询第二数据源的第二请求;第二请求可指示,查询第二数据源中与第二时间段及查询字段相应的数据;
可选的,第二请求可以是SQL语句形式,本发明实施例可将第二时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第二SQL语句,并在第二SQL语句中指示查询数据源与第二数据源相应,从而生成第二请求;第二SQL语句可以是第二请求的一种可选形式。
步骤S13、终端联合第一请求和第二请求生成目标查询请求。
在生成第一请求和第二请求后,终端可将第一请求和第二请求进行联合,生成适于presto查询引擎的目标查询请求;可选的,目标查询请求的形式可以是SQL请求。
示例的,以当前时间为当前日期,预定时间为2天,当前日期为20180703,查询时间段为20180703以前的时间段为例,且第一数据源为kafka数据源,第二数据源为hive数据源,则在生成适于该查询时间段和查询字段的目标查询请求时,本发明实施例可生成如下第一请求和第二请求;
第一请求:select‘lectureid’,‘appid’,‘roomid’,‘act’,cast(_key astimestamp)as message_timestamp from kafka.test.kafka_log where loginfo[‘act’]is not Null and date_format(FROM_UNIXTIME(timestamp),’%Y%m%d’)>='20180702'
第二请求:select loginfo[‘lectureid’],lginfo[‘appid’],lecture[‘roomid’],loginfo[‘lecturename’],loginfo[‘act’]from hive.test.nginx_log andday<‘20180702’;
从而联合第一请求和第二请求,可生成如下目标查询请求:
select‘lectureid’,‘appid’,‘roomid’,‘act’,cast(_key as timestamp)asmessage_timestamp from kafka.test.kafka_log where loginfo[‘act’]is not Nulland date_format(FROM_UNIXTIME(timestamp),’%Y%m%d’)>='20171216'
Union all
select
loginfo[‘lectureid’],lginfo[‘appid’],lecture[‘roomid’],loginfo[‘lecturename’],loginfo[‘act’]from hive.test.nginx_log and day<=‘20171216’。
需要说明的是,上述示例仅为便于说明目标查询请求的一种生成示例;第一请求、第二请求、联合第一请求和第二请求的形式并不限于上述示例。
可选的,目标查询请求可以是SQL语句形式,例如在前文生成第一SQL语句和第二SQL语句的基础上,本发明实施例可联合第一SQL语句和第二SQL语句生成目标SQL语句,从而得到目标查询请求。
进一步,本发明实施例可验证目标查询请求是否符合SQL规范;若否,则停止后续步骤,以减少提交错误的查询请求,减轻presto查询引擎的压力;若是,则可继续执行后续步骤;显然,此处的验证步骤仅是可选的;
可选的,在验证目标查询请求是否符合SQL规范时,本发明实施例可在联合第一请求和第二请求前,分别验证第一请求和第二请求是否符合SQL规范,并在第一请求和第二请求均符合SQL规范时,确定目标查询请求符合SQL规范;在另一种方式中,本发明实施例也可在联合第一请求和第二请求后,验证联合得到的目标查询请求整体上是否符合SQL规范。
步骤S14、终端将所述目标查询请求提交至presto查询引擎。
可选的,查询请求可以是SQL语句形式,终端在生成目标SQL语句后(目标SQL语句是目标查询请求的一种可选形式),可将目标SQL语句拼成字符串,目标SQL语句拼成的字符串可通过AJAX请求提交至presto查询引擎,即终端可通过AJAX请求将目标SQL语句拼成的字符串提交至presto查询引擎,从而实现目标查询请求提交至presto查询引擎;
其中,AJAX表示Asynchronous JavaScript And XML(异步JS和XML),即通过使用JS语言进行异步交互。
步骤S15、presto查询引擎根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务。
可选的,可由presto查询引擎的调度节点根据目标查询请求,生成查询任务(task);调度节点在presto查询引擎中主要负责解析查询请求,生成查询执行计划、stage和查询任务(task),并对生成的task进行调度;
在本发明实施例中,调度节点在生成查询任务时,可基于目标查询请求中联合的第一请求和第二请求,分别生成第一请求相应的第一查询任务,和第二请求相应的第二查询任务;
需要说明的是,第一查询任务指的是调度节点生成的task中,与第一请求相应的一类task,第一查询任务的数量可能为至少一个;第二查询任务指的是调度节点生成的task中,与第二请求相应的一类task,第二查询任务的数量可能为至少一个。
步骤S16、presto查询引擎执行第一查询任务,从第一数据源查询与第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二时间段和查询字段相应的查询结果。
可选的,调度节点生成第一查询任务和第二查询任务后,可调度工作节点执行task,将第一查询任务和第二查询任务分配给presto查询引擎的工作节点并行处理;可选的,调度节点分配task的机制可根据实际需要设定,本发明实施例并不局限;
分配到第一查询任务的工作节点可执行第一查询任务,从第一数据源查询与第一时间段和查询字段相应的查询结果;示例的,第一查询任务可指示第一数据源,查询字段及第一时间段,从而分配到第一查询任务的工作节点可通过与第一数据源对应的连接器,查询第一数据源中与查询字段及第一时间段相应的数据;
分配到第二查询任务的工作节点可执行第二查询任务,从第二数据源查询与第二时间段和查询字段相应的第二查询结果;示例的,第二查询任务可指示第二数据源,查询字段及第二时间段,从而分配到第二查询任务的工作节点可通过与第二数据源对应的连接器,查询第二数据源中与查询字段及第二时间段相应的数据。
步骤S17、presto查询引擎汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果。
步骤S18、presto查询引擎将目标查询结果反馈给终端。
可选的,终端提交目标查询请求后,可周期性的向presto查询引擎请求查询结果,每次请求查询结果后,presto查询引擎可将已查询到的部分查询结果反馈给终端,直至经过终端多次的请求查询结果后,终端可获取到presto查询引擎反馈的全部目标查询结果。
可以看出,本发明实施例基于第一数据源存储数据收集时间距当前时间处于预定时间内的数据,及第二数据源存储数据收集时间距当前时间超出预定时间的数据的存储特性,在终端构造目标查询请求时,可将查询时间段划分为距当前时间处于预定时间内的第一时间段,及距当前时间超出预定时间的第二时间段;从而基于第一时间段构造出查询第一数据源的第一请求,基于第二时间段构造出查询第二数据源的第二请求,进而联合第一请求和第二请求生成目标查询请求。本发明实施例可在发往presto查询引擎的目标查询请求中,高效、准确的划分针对第一数据源和第二数据源的查询信息,以便于presto查询引擎针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,为提升数据查询效率提供了可能。
相应的,presto查询引擎获取目标查询请求后,可对目标查询请求进行解析,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;从而presto查询引擎可执行第一查询任务,从第一数据源查询与第一时间段和查询字段相应的查询结果,并执行第二查询任务,从第二数据源查询与第二时间段和查询字段相应的查询结果,使得针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,提升了数据查询效率。
进一步,为方便终端解析查询结果,presto查询引擎反馈给终端的目标查询结果可以是JSON(JavaScript Object Notation,JS对象简谱)格式。
可选的,终端获取目标查询结果后,可通过表格的形式展示目标查询结果,并可提供下载该表格的功能;
可选的,终端在展示目标查询结果时,也可引入eCharts插件,以饼图、折线图、柱状图等形式展示目标查询结果,以便查看目标查询结果中的数据变化,从而可直观的反映各埋点采集数据的变化趋势和数据量差异;
进一步,终端可基于不同的分析方式使用不同的统计图展示目标查询结果;例如,柱形图适用于数据量较小的情况(如在目标查询结果的数据量低于数据量阈值时,可使用柱形图展示目标查询结果),从而可直观的体现数据差异,重点突出数据之间的比较;折线图可适用于与时间序列相关的数据,可直观的反映出数据随时间的变化。
作为本发明实施例公开内容的一种可选实现,终端可通过配置文件实现查询条件的设置;可选的,站在终端的角度,图3示出了本发明实施例提供的数据查询方法的另一可选流程,参照图3,该流程可以包括:
步骤S20、导入配置文件。
本发明实施例可采用配置文件,获取查询条件;在本发明实施例中,查询条件可以包括查询字段和查询时间段;配置文件可以记录查询字段名与字段名ID的对应关系,一个字段名ID可唯一标识一个查询字段名;
可选的,配置文件可以是JSON格式,JSON格式是一种轻量级的数据交换格式,易于解析和生成。
步骤S21、解析配置文件,展示配置文件记录的查询字段名。
可选的,在解析配置文件时,终端的presto客户端的查询页面可展示配置文件相应记录的查询字段名。
步骤S22、选择至少一个查询字段名,并获取各选择的查询字段名相应的字段内容,确定出查询字段。
可选的,为实现组合查询,展示的查询字段名可对应有复选框,用户可通过复选框从展示的查询字段名中任意选择一个或多个查询字段名,并输入各选择的查询字段名相应的字段内容,从而确定出至少一个查询字段,实现不同查询字段的灵活组合。可选的,在本发明实施例中,查询字段可以理解为是查询字段名及所对应的字段内容。
步骤S23、根据时间选择组件选择查询时间段。
可选的,在本发明实施例中,查询时间段的获取可通过时间选择组件实现,时间选择组件如Element UI库提供的时间选择组件;示例的,查询页面可展示时间选择组件相应的时间选择项,用户可通过时间选择项选择查询时间段。
在一种替代实现中,步骤S23也可替代为自动确定查询时间段,如自动设置查询时间段为当前时间以前的时间段等。
可选的,在本发明实施例中,查询字段的确定和查询时间段的确定可以不具有明显的先后顺序之分,如查询字段的确定和查询时间段的确定可并行执行等。
步骤S24、判断部分查询时间段是否距当前时间处于预定时间内,若否,执行步骤S25或步骤S26,若是,执行步骤S27。
步骤S25、若全部查询时间段距当前时间处于预定时间内,将查询时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成SQL语句,并在该SQL语句中指示查询数据源与第一数据源相应,提交该SQL语句。
步骤S26、若全部查询时间段距当前时间超出预定时间,将查询时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成SQL语句,并在该SQL语句中指示查询数据源与第二数据源相应,提交该SQL语句。
步骤S27、将查询时间段划分为第一时间段和第二时间段。
部分查询时间段距当前时间处于预定时间内,即查询时间段中的一部分时间距当前时间处于预定时间内,查询时间段中的另一部分时间距当前时间超出预定时间,在此情况下,可将查询时间段划分为针对第一数据源的第一时间段,和针对第二数据源的第二时间段;其中,第一时间段为查询时间段中距当前时间处于预定时间内的部分,第二时间段为查询时间段中距当前时间超出预定时间的部分。
步骤S28、将第一时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第一SQL语句,并在第一SQL语句中指示查询数据源与第一数据源相应;及将第二时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第二SQL语句,并在第二SQL语句中指示查询数据源与第二数据源相应。
步骤S29、联合第一SQL语句和第二SQL语句生成目标SQL语句。
本发明实施例提供的数据查询方法中,可通过配置文件实现查询字段的获取,使得查询字段的字段名并不是固定不变的,而是可随配置文件的调整而调整,实现了查询字段名的动态变更,使得查询条件中查询字段的组合更为灵活。并且,本发明实施例可在发往presto查询引擎的目标SQL语句中,高效、准确的划分针对第一数据源和第二数据源的查询信息,为提升数据查询效率提供了可能。
作为本发明实施例公开内容的一种可选实现,站在presto查询引擎的角度,图4示出了本发明实施例提供的数据查询方法的再一可选流程,图4是以同时查询第一数据源和第二数据源的情况进行说明,从图4可以看出,presto查询引擎可以包括:调度节点,多个工作节点;
可选的,presto查询引擎在根据SQL语句执行查询时,可将SQL语句解析成相应的查询任务(task),从而通过分布式的工作节点执行查询任务,实现查询过程。
参照图4,该流程可以包括:
步骤S30、调度节点解析目标SQL语句,生成查询执行计划。
可选的,调度节点接收到终端提交的目标SQL语句后,可解析目标SQL语句,生成查询执行计划;解析目标SQL语句到生成查询执行计划的过程可以包括:分析目标SQL语句的词法和语法,分析目标SQL语句的语义,生成查询执行计划,优化查询执行计划等。
目标SQL语句可以由第一SQL语句和第二SQL语句联合得到。
示例的,调度节点接收到目标SQL语句后,可通过SQL的语法解析器将目标SQL语句解析成抽象语法树;该抽象语法树可以表达目标SQL的语法结构,例如,目标SQL语句中使用的关键词是int而不是Integer的情况,将在抽象语法树中暴露出来;此段说明可以理解为是,分析目标SQL语句的词法和语法,分析目标SQL语句的语义的过程;
如果抽象语法树表达的语法结构符合SQL语法规范,则抽象语法树可以通过逻辑查询计划器生成抽象语法树相应的物理语法树节点,从而得到查询执行计划;该逻辑查询计划器可用于,从元数据中查找与目标SQL语句中出现的表相应的类型信息,从而将该类型信息与抽象语法树相对应,生成物理语法树节点;物理语法树节点中不仅具有目标SQL的查询关系,还有类型的关系;此段说明的过程可以理解为是,生成查询执行计划的过程。
步骤S31、调度节点将查询执行计划拆分成多个具有层级关系的stage,所述stage被划分为第一SQL语句相应的第一查询任务,及第二SQL语句相应的第二查询任务。
stage(阶段)表示的是查询执行阶段;调度节点在生成查询执行计划后,调度节点可将查询执行计划拆分成多个具有层级关系的stage,一个stage可以代表查询执行的一部分;
可选的,stage之间可以是树状的层级结构,stage并不会实际执行,stage是调度节点用于对查询执行计划进行管理和建模的逻辑概念,stage在逻辑上可被划分为一系列的查询任务(task),task可以由分布式的多个工作节点执行;在本发明实施例中,将查询执行计划拆分成多个具有层级关系的stage后,由于目标SQL语句是由第一SQL语句和第二SQL语句联合得到,因此stage可以被划分为第一SQL语句相应的第一查询任务,及第二SQL语句相应的第二查询任务。
步骤S32、调度节点调度工作节点执行stage对应的第一查询任务及第二查询任务。
在presto查询引擎中,一个stage被划分为一系列的task,每个task处理一个或者多个split(分片),由于一个stage被分解成多个task,因此可调度多个工作节点并行的执行stage对应的task;在本发明实施例中,stage被划分为第一SQL语句相应的第一查询任务,及第二SQL语句相应的第二查询任务,因此调度节点在调度工作节点执行stage时,可实现调度工作节点执行stage对应的第一查询任务及第二查询任务。
步骤S33、工作节点执行第一查询任务,通过与第一数据源连接的连接器,从第一数据源查询与第一时间段和查询字段相应的查询结果。
步骤S34、工作节点执行第二查询任务,通过与第二数据源连接的连接器,从第二数据源查询与第二时间段和查询字段相应的查询结果。
需要说明的是,第一查询任务指的是调度节点生成的task中,与第一请求相应的一类task;第二查询任务指的是调度节点生成的task中,与第二请求相应的一类task。第一SQL语句为第一请求的一种可选形式,第二SQL语句为第二请求的一种可选形式。
可选的,调度节点调度工作节点执行stage对应的task可以认为是,调度节点将stage对应的task分配给工作节点执行;分配到第一查询任务的工作节点可通过连接第一数据源的连接器,从第一数据源查询与第一时间段和查询字段相应的查询结果,分配到第二查询任务的工作节点可通过连接第二数据源的连接器,从第二数据源查询与第二时间段和查询字段相应的查询结果。
可选的,每个stage(除了single stage和source stage)都会有输入和输出,每个stage都会从上游stage读取数据,然后将对应task的查询结果输出给下游stage;其中,source stage(源阶段)没有上游stage,source stage可从调度节点获取数据,singlestage(单一阶段)没有下游stage,single stage可汇总各stage对应的task得到的查询结果,并反馈给调度节点,由调度节点反馈给终端。
步骤S35、single stage的工作节点汇总各工作节点的查询结果,得到目标查询结果。
在本发明实施例中,各工作节点执行所分配的查询任务并得到查询结果后,可将查询结果输出到下游stage的工作节点,最后由single stage的工作节点汇总各工作节点的查询结果,得到目标查询结果。
步骤S36、调度节点获取single stage的工作节点汇总的目标查询结果。
进一步,终端可周期性的向调度节点请求查询结果,每次请求查询结果后,调度节点可将已查询到的部分查询结果反馈给终端,直至经过终端多次的请求查询结果后,调度节点可将全部目标查询结果均反馈给终端。
作为本发明实施例公开内容的一种应用例,本发明实施例可在互联网教育领域的教学日志查询中进行应用,示例的,如图5所示,presto查询引擎可对接kafka数据源和hive数据源,kafka数据源可保留两天内采集的教学日志,采集时间超出两天的教学日志可存储到hive数据源;设置两天的存储时限主要是出于容错性的考虑,如果存储时限是一天,那么将kafka中的数据写入到hive是需要一定时间的,因此在写入数据的过程中,前一天的某些数据就有可能会被删除了,从而导致数据丢失;另外,存储时限为两天可以在由于一些特殊原因导致数据写入hive失败的时候,具有充足的时间进行人工干预,从而保证数据正确写入hive;当然,设置两天的存储时限也仅是一种示例说明。
本发明实施例可在hive中建立分区表,分区表有一级分区,该分区以日期作为分区值;通过建立周期性调度任务,将kafka中采集时间超出两天的教学日志写入到hive的分区表对应的分区中;
进而,本发明实施例可在presto中创建一个View(视图)用于组合hive中的表和kafka中的表,View其实是组合的hive中存储的教学日志的表和kafka中存储的教学日志的表,这样View中的数据就是实时的最新数据;只需要对业务方开放该View的访问权限,业务方就可以通过presto使用SQL语句对实时数据进行分析;
在本发明实施例中,presto是通过split(分片)从kafka集群中读取数据的,而kafka中的一个log-segment就对应presto中的一个split;如果kafka中的一个log-segment太大就会导致presto中读取的一个split太大,而split个数太少,会严重降低presto从kafka集群中读取数据的效率;因此在实际应用中,需要适当调整kafka中log-segment的最大值,从而保证presto从kafka读取数据的效率。可选的,经过实际验证,设置kafka中log-segment的最大值为128MB,具有较好的效果。
在本发明实施例中,在查询教学日志时,终端可获取查询时间段和查询字段(如教学日志的关键词),将查询时间段划分为两天内的第一时间段,和超出两天的第二时间段;从而针对kafka数据源可根据第一时间段和查询字段生成第一SQL语句,针对hive数据源可根据第二时间段和查询字段生成第二SQL语句,从而联合第一SQL语句和第二SQL语句,生成目标SQL语句;终端可将目标SQL语句提交至presto查询引擎;
presto查询引擎可根据目标SQL语句,生成第一SQL语句相应的第一查询任务和第二SQL语句相应的第二查询任务;进而执行第一查询任务,从kafka数据源获取与第一时间段和查询字段相应的查询结果,执行第二查询任务,从hive数据源获取与第二时间段和查询字段相应的查询结果,从而汇总各查询结果,得到目标查询结果;可选的,presto查询引擎执行查询的过程可参照前文相应部分的描述,此处不再赘述;
终端在提交目标SQL语句后,可周期性的向presto查询引擎请求查询结果,直至获取到presto查询引擎反馈的全部目标查询结果。
本发明实施例可在发往presto查询引擎的目标查询请求中,高效、准确的划分针对第一数据源和第二数据源的查询信息,以便于presto查询引擎针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,为提升数据查询效率提供了可能。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
下面从终端的角度,对本发明实施例提供的数据查询装置进行介绍;下文描述的数据查询装置可以认为是,终端为实现本发明实施例提供的数据查询方法所需设置的程序模块架构。下文描述的数据查询装置的内容可与上文描述的数据查询方法的内容相互对应参照。
图6为本发明实施例提供的数据查询装置的一种可选结构框图,该数据查询装置可应用于终端,参照图6,该数据查询装置可以包括:
查询条件获取模块100,用于获取查询条件,所述查询条件包括查询字段及查询时间段;
时间段划分模块110,用于若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
请求生成模块120,用于根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
请求联合模块130,用于联合第一请求和第二请求生成目标查询请求;
请求提交模块140,用于向presto查询引擎提交目标查询请求。
可选的,所述查询时间段包括查询起始时间和查询结束时间;所述部分查询时间段距当前时间处于预定时间内包括:查询起始时间距当前时间超出预定时间,且查询结束时间距当前时间处于预定时间内。
可选的,图7示出了本发明实施例提供的数据查询装置的另一可选结构框图,结合图6和图7所示,该数据查询装置还可以包括:
第一处理模块150,用于若全部查询时间段距当前时间超出预定时间,根据查询时间段和查询字段生成查询第二数据源的查询请求,并向presto查询引擎提交该查询请求;
第二处理模块160,用于若全部查询时间段距当前时间处于预定时间内,根据查询时间段和查询字段生成查询第一数据源的查询请求,并向presto查询引擎提交该查询请求。
可选的,请求生成模块120,用于根据第一时间段和查询字段,生成查询第一数据源的第一请求,具体包括:
将第一时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第一SQL语句,所述第一SQL语句中指示查询数据源与第一数据源相应;
请求生成模块120,用于根据第二时间段和查询字段,生成查询第二数据源的第二请求,具体包括:
将第二时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第二SQL语句,所述第二SQL语句中指示查询数据源与第二数据源相应;
可选的,请求联合模块130,用于联合第一请求和第二请求生成目标查询请求,具体包括:
联合第一SQL语句和第二SQL语句生成目标SQL语句。
可选的,请求提交模块140,用于向presto查询引擎提交目标查询请求,具体包括:
将目标SQL语句拼成字符串;
通过AJAX请求向presto查询引擎提交目标SQL语句拼成的字符串。
可选的,查询条件获取模块100,用于获取查询条件,具体包括:
导入配置文件;所述配置文件记录有查询字段名与字段名ID的对应关系;
解析配置文件,展示配置文件记录的查询字段名;
选择至少一个查询字段名,并获取各选择的查询字段名相应的字段内容,确定出查询字段;
根据时间选择组件选择查询时间段。
可选的,时间段划分模块110,用于将所述查询时间段划分为第一时间段和第二时间段,具体包括:
确定查询时间段中距当前时间处于预定时间内的时间分界点;
将时间分界点至查询结束时间对应的时间段作为第一时间段,将查询起始时间至时间分界点对应的时间段作为第二时间段。
可选的,所述第一数据源为kafka数据源,第二数据源为hive数据源。
可选的,图8示出了本发明实施例提供的数据查询装置的再一可选结构框图,结合图6和图8所示,该数据查询装置还可以包括:
结果请求模块170,用于周期性的向presto查询引擎请求目标查询结果,直至经过多次请求后得到全部的目标查询结果;其中,每次请求目标查询结果后,presto查询引擎反馈已查询到的部分目标查询结果。
上述描述的数据查询装置可通过程序形式装载于终端,可选的,图9示出了本发明实施例提供的终端的一种可选硬件结构,参照图9,该终端可以包括:至少一个处理芯片1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
在本发明实施例中,处理芯片1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理芯片1、通信接口2、存储器3通过通信总线4完成相互间的通信;显然,图9所示的处理芯片1、通信接口2、存储器3和通信总线4的通信连接示意仅是可选的;
可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;
处理芯片1可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,存储器3存储有程序,处理芯片1调用存储器3所存储的程序,以实现上述以终端角度执行的数据查询方法的步骤。
本发明实施例还提供一种存储介质,该存储介质存储有可执行的程序,所述程序可用于实现上述以终端角度执行的数据查询方法的步骤。
可选的,所述程序具体用于:
获取查询条件,所述查询条件包括查询字段及查询时间段;
若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
联合第一请求和第二请求生成目标查询请求;
向presto查询引擎提交目标查询请求。
可选的,所述程序的细化功能和扩展功能可参照前文相应部分的描述,此处不再赘述。
下面从presto查询引擎的角度,对本发明实施例提供的presto查询引擎进行介绍,下文描述的presto查询引擎的内容可与前文描述的数据查询方法相互对应参照。
结合图1所示,本发明实施例提供的presto查询引擎可以包括:调度节点和多个工作节点;
其中,调度节点,用于获取目标查询请求,所述目标查询请求由查询第一数据源的第一请求和查询第二数据源的第二请求联合得到;根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;及向终端反馈目标查询请求相应的目标查询结果;
工作节点,用于执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果;汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果;
其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;所述第一时间段为目标查询请求的查询时间段中距当前时间处于预定时间内的部分,所述第二时间段为查询时间段中距当前时间超出预定时间的部分。
可选的,所述目标查询请求包括目标SQL语句,所述第一请求包括第一SQL语句,所述第二请求包括第二SQL语句;
调度节点,用于根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务,具体包括:
解析目标SQL语句,生成查询执行计划;
将查询执行计划拆分成多个具有层级关系的stage,所述stage被划分为第一SQL语句相应的第一查询任务,及第二SQL语句相应的第二查询任务。
可选的,调度节点,用于解析目标SQL语句,生成查询执行计划,具体包括:
通过SQL的语法解析器将目标SQL语句解析成抽象语法树;
通过逻辑查询计划器生成抽象语法树相应的物理语法树节点,得到查询执行计划。
可选的,工作节点,用于执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,具体包括:
执行stage对应的第一查询任务,通过与第一数据源连接的连接器,从第一数据源查询与第一时间段和查询字段相应的查询结果;
可选的,工作节点,用于执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果,具体包括:
执行stage对应的第二查询任务,通过与第二数据源连接的连接器,从第二数据源查询与第二时间段和查询字段相应的查询结果;
可选的,工作节点,用于汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果,具体包括:
通过single stage的工作节点汇总各工作节点的查询结果,得到目标查询结果,其中各工作节点的查询结果输出到下游stage的工作节点,直至输出到single stage的工作节点。
可选的,调度节点,用于向终端反馈目标查询请求相应的目标查询结果,具体包括:
周期性的获取终端发送的请求目标查询结果的请求,并在终端每发送一次请求时,将已查询的部分目标查询结果反馈给终端,直至全部目标查询结果均反馈给终端。
本发明实施例可在发往presto查询引擎的目标查询请求中,高效、准确的划分针对第一数据源和第二数据源的查询信息,以便于presto查询引擎针对第一数据源和第二数据源的查询划分更为高效、准确,在保障查询结果的实时性和全面性的情况下,为提升数据查询效率提供了可能。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (18)
1.一种数据查询方法,其特征在于,包括:
获取查询条件,所述查询条件包括查询字段及查询时间段;
若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
联合第一请求和第二请求生成目标查询请求;
向presto查询引擎提交目标查询请求。
2.根据权利要求1所述的数据查询方法,其特征在于,所述查询时间段包括查询起始时间和查询结束时间;所述部分查询时间段距当前时间处于预定时间内包括:
查询起始时间距当前时间超出预定时间,且查询结束时间距当前时间处于预定时间内。
3.根据权利要求1或2所述的数据查询方法,其特征在于,还包括:
若全部查询时间段距当前时间超出预定时间,根据查询时间段和查询字段生成查询第二数据源的查询请求,并向presto查询引擎提交该查询请求;
若全部查询时间段距当前时间处于预定时间内,根据查询时间段和查询字段生成查询第一数据源的查询请求,并向presto查询引擎提交该查询请求。
4.根据权利要求1或2所述的数据查询方法,其特征在于,所述根据第一时间段和查询字段,生成查询第一数据源的第一请求包括:
将第一时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第一SQL语句,所述第一SQL语句中指示查询数据源与第一数据源相应;
所述根据第二时间段和查询字段,生成查询第二数据源的第二请求包括:
将第二时间段和查询字段组成的查询条件以SQL语句的形式进行拼接,形成第二SQL语句,所述第二SQL语句中指示查询数据源与第二数据源相应;
所述联合第一请求和第二请求生成目标查询请求包括:
联合第一SQL语句和第二SQL语句生成目标SQL语句。
5.根据权利要求4所述的数据查询方法,其特征在于,所述向presto查询引擎提交目标查询请求包括:
将目标SQL语句拼成字符串;
通过AJAX请求向presto查询引擎提交目标SQL语句拼成的字符串。
6.根据权利要求1或5所述的数据查询方法,其特征在于,所述获取查询条件包括:
导入配置文件;所述配置文件记录有查询字段名与字段名ID的对应关系;
解析配置文件,展示配置文件记录的查询字段名;
选择至少一个查询字段名,并获取各选择的查询字段名相应的字段内容,确定出查询字段;
根据时间选择组件选择查询时间段。
7.根据权利要求2所述的数据查询方法,其特征在于,所述将所述查询时间段划分为第一时间段和第二时间段包括:
确定查询时间段中距当前时间处于预定时间内的时间分界点;
将时间分界点至查询结束时间对应的时间段作为第一时间段,将查询起始时间至时间分界点对应的时间段作为第二时间段。
8.根据权利要求1或5或7所述的数据查询方法,其特征在于,所述第一数据源为kafka数据源,第二数据源为hive数据源。
9.根据权利要求1或2所述的数据查询方法,其特征在于,还包括:
周期性的向presto查询引擎请求目标查询结果,直至经过多次请求后得到全部的目标查询结果;其中,每次请求目标查询结果后,presto查询引擎反馈已查询到的部分目标查询结果。
10.一种数据查询方法,其特征在于,包括:
获取目标查询请求,所述目标查询请求由查询第一数据源的第一请求和查询第二数据源的第二请求联合得到;
根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;
执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;所述第一时间段为目标查询请求的查询时间段中距当前时间处于预定时间内的部分,所述第二时间段为所述查询时间段中距当前时间超出预定时间的部分;
汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果;
向终端反馈所述目标查询结果。
11.根据权利要求10所述的数据查询方法,其特征在于,所述目标查询请求包括目标SQL语句,所述第一请求包括第一SQL语句,所述第二请求包括第二SQL语句;
所述根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务包括:
解析目标SQL语句,生成查询执行计划;
将查询执行计划拆分成多个具有层级关系的阶段stage,所述stage被划分为第一SQL语句相应的第一查询任务,及第二SQL语句相应的第二查询任务。
12.根据权利要求11所述的数据查询方法,其特征在于,所述解析目标SQL语句,生成查询执行计划包括:
通过SQL的语法解析器将目标SQL语句解析成抽象语法树;
通过逻辑查询计划器生成抽象语法树相应的物理语法树节点,得到查询执行计划。
13.根据权利要求11所述的数据查询方法,其特征在于,所述执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果包括:
执行stage对应的第一查询任务,通过与第一数据源连接的连接器,从第一数据源查询与第一时间段和查询字段相应的查询结果;
所述执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果包括:
执行stage对应的第二查询任务,通过与第二数据源连接的连接器,从第二数据源查询与第二时间段和查询字段相应的查询结果;
所述汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果包括:
通过single stage的工作节点汇总各工作节点的查询结果,得到目标查询结果,其中各工作节点的查询结果输出到下游stage的工作节点,直至输出到single stage的工作节点。
14.根据权利要求10所述的数据查询方法,其特征在于,所述向终端反馈所述目标查询结果包括:
周期性的获取终端发送的请求目标查询结果的请求,并在终端每发送一次请求时,将已查询的部分目标查询结果反馈给终端,直至全部目标查询结果均反馈给终端。
15.一种数据查询装置,其特征在于,包括:
查询条件获取模块,用于获取查询条件,所述查询条件包括查询字段及查询时间段;
时间段划分模块,用于若部分查询时间段距当前时间处于预定时间内,将所述查询时间段划分为第一时间段和第二时间段;所述第一时间段距当前时间处于预定时间内,所述第二时间段距当前时间超出预定时间;
请求生成模块,用于根据第一时间段和查询字段,生成查询第一数据源的第一请求,及根据第二时间段和查询字段,生成查询第二数据源的第二请求;其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;
请求联合模块,用于联合第一请求和第二请求生成目标查询请求;
请求提交模块,用于向presto查询引擎提交目标查询请求。
16.一种终端,其特征在于,包括至少一个存储器和至少一个处理芯片;所述存储器存储有程序,所述处理芯片执行所述程序,以实现权利要求1-9任一项所述的数据查询方法。
17.一种存储介质,其特征在于,所述存储介质存储有执行权利要求1-9任一项所述的数据查询方法的程序。
18.一种presto查询引擎,其特征在于,包括:
调度节点,用于获取目标查询请求,所述目标查询请求由查询第一数据源的第一请求和查询第二数据源的第二请求联合得到;根据所述目标查询请求,生成第一请求相应的第一查询任务和第二请求相应的第二查询任务;及向终端反馈目标查询请求相应的目标查询结果;
工作节点,用于执行第一查询任务,从第一数据源查询与第一请求指示的第一时间段和查询字段相应的查询结果,及执行第二查询任务,从第二数据源查询与第二请求指示的第二时间段和查询字段相应的查询结果;汇总第一查询任务和第二查询任务的查询结果,得到目标查询结果;
其中,所述第一数据源存储有数据采集时间距当前时间处于预定时间内的数据,所述第二数据源存储有数据采集时间距当前时间超出预定时间的数据;所述第一时间段为目标查询请求的查询时间段中距当前时间处于预定时间内的部分,所述第二时间段为查询时间段中距当前时间超出预定时间的部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811279323.3A CN111125178B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811279323.3A CN111125178B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125178A true CN111125178A (zh) | 2020-05-08 |
CN111125178B CN111125178B (zh) | 2021-05-28 |
Family
ID=70484633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811279323.3A Active CN111125178B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125178B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434056A (zh) * | 2020-10-12 | 2021-03-02 | 南京江北新区生物医药公共服务平台有限公司 | 一种详情数据的查询方法及装置 |
CN112559306A (zh) * | 2020-11-17 | 2021-03-26 | 贝壳技术有限公司 | 用户行为轨迹获取方法、装置与电子设备 |
CN112579610A (zh) * | 2020-12-23 | 2021-03-30 | 安徽航天信息有限公司 | 多数据源结构分析方法、系统、终端设备及存储介质 |
CN113377777A (zh) * | 2021-06-29 | 2021-09-10 | 深圳市华曦达科技股份有限公司 | 数据加载方法、设备、计算机程序产品及存储介质 |
CN113918305A (zh) * | 2021-10-29 | 2022-01-11 | 平安银行股份有限公司 | 节点调度方法、装置、电子设备及可读存储介质 |
CN114756573A (zh) * | 2022-06-16 | 2022-07-15 | 恒生电子股份有限公司 | 数据处理方法、装置及系统 |
CN115563191A (zh) * | 2022-11-21 | 2023-01-03 | 广东盈峰科技有限公司 | 水环境项目中多类型数据库表混合关联查询的方法与系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914471A (zh) * | 2012-12-31 | 2014-07-09 | 北京启明星辰信息技术股份有限公司 | 一种海量事件的处理方法及装置 |
CN105787119A (zh) * | 2016-03-25 | 2016-07-20 | 盛趣信息技术(上海)有限公司 | 基于混合引擎的大数据处理方法及系统 |
CN105808661A (zh) * | 2016-02-29 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种数据查询的方法及装置 |
CN105975617A (zh) * | 2016-05-20 | 2016-09-28 | 北京京东尚科信息技术有限公司 | 一种多分区表查询处理的方法和装置 |
CN106776810A (zh) * | 2016-11-24 | 2017-05-31 | 广东数果科技有限公司 | 一种大数据的数据处理系统及方法 |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
-
2018
- 2018-10-30 CN CN201811279323.3A patent/CN111125178B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914471A (zh) * | 2012-12-31 | 2014-07-09 | 北京启明星辰信息技术股份有限公司 | 一种海量事件的处理方法及装置 |
CN105808661A (zh) * | 2016-02-29 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种数据查询的方法及装置 |
CN105787119A (zh) * | 2016-03-25 | 2016-07-20 | 盛趣信息技术(上海)有限公司 | 基于混合引擎的大数据处理方法及系统 |
CN105975617A (zh) * | 2016-05-20 | 2016-09-28 | 北京京东尚科信息技术有限公司 | 一种多分区表查询处理的方法和装置 |
CN106776810A (zh) * | 2016-11-24 | 2017-05-31 | 广东数果科技有限公司 | 一种大数据的数据处理系统及方法 |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434056A (zh) * | 2020-10-12 | 2021-03-02 | 南京江北新区生物医药公共服务平台有限公司 | 一种详情数据的查询方法及装置 |
CN112559306A (zh) * | 2020-11-17 | 2021-03-26 | 贝壳技术有限公司 | 用户行为轨迹获取方法、装置与电子设备 |
CN112559306B (zh) * | 2020-11-17 | 2022-11-15 | 贝壳技术有限公司 | 用户行为轨迹获取方法、装置与电子设备 |
CN112579610A (zh) * | 2020-12-23 | 2021-03-30 | 安徽航天信息有限公司 | 多数据源结构分析方法、系统、终端设备及存储介质 |
CN113377777A (zh) * | 2021-06-29 | 2021-09-10 | 深圳市华曦达科技股份有限公司 | 数据加载方法、设备、计算机程序产品及存储介质 |
CN113918305A (zh) * | 2021-10-29 | 2022-01-11 | 平安银行股份有限公司 | 节点调度方法、装置、电子设备及可读存储介质 |
CN114756573A (zh) * | 2022-06-16 | 2022-07-15 | 恒生电子股份有限公司 | 数据处理方法、装置及系统 |
CN115563191A (zh) * | 2022-11-21 | 2023-01-03 | 广东盈峰科技有限公司 | 水环境项目中多类型数据库表混合关联查询的方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111125178B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111125178B (zh) | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110032575A (zh) | 数据查询方法、装置、设备和存储介质 | |
US8799230B2 (en) | Method and system for centralized issue tracking | |
CN111177113B (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
US20180129712A1 (en) | Data provenance and data pedigree tracking | |
CN111078729B (zh) | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 | |
CN110673839B (zh) | 分布式工具配置化构建生成方法及系统 | |
CN111930489B (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN110795697A (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN113177062A (zh) | 一种数据查询方法及装置 | |
US20150317336A1 (en) | Data reconstruction | |
CN107391528B (zh) | 前端组件依赖信息搜索方法及设备 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN113010542B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN116483850A (zh) | 数据处理方法、装置、设备以及介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN112732663A (zh) | 一种日志信息处理方法及装置 | |
CN112163948A (zh) | 一种分润计算方法、系统、设备及存储介质 | |
CN109408544B (zh) | 基于引擎的数据聚合方法、装置及存储介质、服务器 | |
US8856152B2 (en) | Apparatus and method for visualizing data | |
CN113724808B (zh) | 医学调查问卷生成方法、装置、电子设备及存储介质 | |
TWI707273B (zh) | 使用統一聚合查詢語言獲取資源的方法及系統 | |
CN113742359A (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 |