数据查询方法及装置制造方法及图纸

技术编号:12585478 阅读:64 留言:0更新日期:2015-12-24 01:59
本发明专利技术公开了一种数据查询方法及装置,其中方法包括:将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;实时检测各计算节点的查询处理情况;根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。本发明专利技术实施例能够提高查询效率。

【技术实现步骤摘要】

本专利技术实施例涉及大数据
,尤其涉及一种数据查询方法及装置
技术介绍
Presto是Facebook开发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。它定义了一个通用的Java数据库连接(Java Data Base Connectivity,JDBC)模块,通过适当的变通就可以连接各种关系型数据库,例如MySQL数据库、ORACLE数据库和SQL Server数据库等。如图1所示,为现有技术中基于Presto集群架构的网络拓扑结构示意图,Presto集群有多个内部交换机11连接到各个计算节点12中,然后再连接到机房中的上联交换机13,Presto可以配置多种数据源包括MySQL、Oracle、SQL Server、KAFKA和HDFS等。这些数据源与Presto连接也是通过外层的上联交换机13进行通信的,这个上联交换机13可能还连接着其他的业务的服务器或者其他下联交换机,在这个范围内网络资源是共享的,如果网络拥堵可能会影响到好几个业务应用。在现有技术中,当客户端的数据查询请求比较多时,Presto可能会跨多个数据源进行联合查询,此时Presto将根据所有的数据查询请求同时查询起所有的数据抓取线程,将数据抓取到Presto的计算节点中进行计算,这时Presto计算节点就需要频繁的通过上联交换机与数据源的服务器进行通讯和数据交互,这种状态下就会高频率的出现网络拥堵情况。
技术实现思路
本专利技术实施例提供一种数据查询方法及装置,能够提高数据查询效率。第一方面,本专利技术实施例提供了一种数据查询方法,包括:将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;实时检测各计算节点的查询处理情况;根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。第二方面,本专利技术实施例还提供一种数据查询装置,包括:分组模块,用于将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;分配模块,用于任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;检测模块,用于实时检测各计算节点的查询处理情况,根据所述查询处理情况指示所述分配模块从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。本专利技术实施例通过将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;实时检测各计算节点的查询处理情况;根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。本专利技术实施例采用分批次处理每个分组的查询请求消息,避免了高频率的出现网络拥堵情况,从而提高查询效率。【附图说明】图1为现有技术提供的Presto数据查询网络拓扑结构示意图;图2为本专利技术实施例一提供的数据查询方法的流程示意图;图3为本专利技术实施例二提供的数据查询装置的结构示意图。【具体实施方式】下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。本专利技术实施例提供的数据查询方法的执行主体,可为本专利技术实施例提供的数据查询装置,或集成了数据查询装置的交换机,该数据查询装置可以采用硬件或软件实现。实施例一图2为本专利技术实施例一提供的数据查询方法的流程示意图,如图2所示,具体包括:步骤21、将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;其中,任务执行上限可根据查询系统当前的运算能力进行设定。具体的,在分组时,可采用平均分组的策略。例如,每个分组中查询请求消息的个数可为任务执行上限,或略小于任务执行上限。步骤22、任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;具体的,如果当前组的查询请求消息的总数为100条,计算节点为10个,则将100条查询请求消息均衡的分配到I个计算节点进行计算。其中,每个计算节点处理10条查询请求消息。步骤23、实时检测各计算节点的查询处理情况;步骤24、根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。具体的,当检测到分配到各计算节点的查询请求消息均已处理完毕后,则从剩余分组中选择一分组作为当前组,重复执行步骤22至步骤24,直至所有分组均被处理完毕。本实施例通过将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;实时检测各计算节点的查询处理情况;根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。本实施例采用分批次处理每个分组的查询请求消息,避免了高频率的出现网络拥堵情况,从而提高查询效率。示例性的,在上述实施例的基础上,为进一步提高查询效率,所述根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕进一步包括:根据所述查询处理情况确定所述分组中当前未被处理的查询请求消息的总数;当所述总数小于任务执行上限时,则从剩余分组中的查询请求消息中抽取查询请求消息补充到所述分组中,重复执行检测步骤直至剩余分组中的所有查询请求消息都被处理完毕。示例性的,所述根据所述查询处理情况确定所述分组中当前未被处理的查询请求消息的总数具体包括:所述当前未被处理的查询请求消息的总数等于所述分组中查询请求消息的总数减去已处理的查询请求消息的总数;或者,所述当前未被处理的查询请求消息的总数等于所述任务执行上限减去已处理的查询请求消息的总数、已分配的查询请求消息的总数和在计算节点等排队等待处理的查询请求消息的总数。其中,已分配的查询请求消息为已从所述分组中提取出来,但还未被分配到计算节点的查询请求消息。示例性的,在上述实施例的基础上,所述方法还包括:统计所述查询请求消息的总个数;当所述总个数超过预设阈值时,触发执行对所述查询请求消息的分组操作。具体的,当当前待处理的查询请求消息的总个数较少时,即一次性即可处理完毕而不会造成网络拥堵时,就不必再对其进行分组,直接处理即可。当当前待处理的查询请求消息的总个数较多时,在对其启动分组处理。在具体程序实现时,可在程序中设置如下两个相关参数:control_scan_concurrency_enabled,参数含义为是否开启分组读取;scan_concurrency_count,参数含义为每一分组的任务执行上限数。程序可以根据实际需求来动态的调配上述两个参数,需要注意的是,只有开启了分组读取的参数即control_scan_concurrency_enabled后,每一分组的执行上限数(scan_concurrency_count)才当前第1页1 2 本文档来自技高网...

【技术保护点】
一种数据查询方法,其特征在于,包括:将多个查询请求消息进行分组,每个分组中查询请求消息的个数小于等于任务执行上限;任选一分组作为当前组,将所述当前组的查询请求消息分配给至少一个计算节点进行查询处理;实时检测各计算节点的查询处理情况;根据所述查询处理情况从剩余分组中选择一分组作为当前组,直至所有分组均被处理完毕。

【技术特征摘要】

【专利技术属性】
技术研发人员:郭李明
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1