一种数据检索方法和装置制造方法及图纸

技术编号:18940639 阅读:26 留言:0更新日期:2018-09-15 11:05
本发明专利技术公开了一种数据检索方法和装置。根据请求数据检索的结构化查询语言SQL语句生成执行计划;判断所述执行计划是否满足流式结果返回条件;如果满足流式结果返回条件,则在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。本发明专利技术在数据检索过程中,逐个获取检索结果,并且一边获取检索结果一边提供给用户使用,有效降低了使用SparkSQL进行数据检索时的结果返回响应时间和检索总消耗时间,提升了SparkSQL框架进行数据检索时的效率和可用性,并且通过流式返回方式,解决了SparkSQL在进行大结果集检索时可能出现的内存问题,使SparkSQL框架进行大结果集检索成为可能。

Data retrieval method and device

The invention discloses a data retrieval method and device. The execution plan is generated according to the structured query language SQL statement of the request data retrieval; whether the execution plan satisfies the flow result return condition is judged; if the flow result return condition is satisfied, the retrieval result is obtained one by one and provided to the user one by one during the execution of the execution plan until all the retrieval results are obtained. The fruit is acquired and provided to the user. In the process of data retrieval, the invention obtains the retrieval results one by one, and provides the retrieval results for users to use while obtaining the retrieval results, effectively reduces the result return response time and the total retrieval time when using SparkSQL for data retrieval, improves the efficiency and availability of SparkSQL framework for data retrieval, and And through the way of streaming return, it solves the memory problems that may occur when SparkSQL retrieves large result sets, and makes it possible for SparkSQL framework to retrieve large result sets.

【技术实现步骤摘要】
一种数据检索方法和装置
本专利技术涉及大数据处理领域,特别是涉及一种数据检索方法和装置。
技术介绍
随着计算机技术的不断发展和信息化程度的不断提高,数据量迅速增长,面向海量数据的存储及应用也随之蓬勃发展。如,在网络安全上,使用大数据技术分析网络攻击行为;在电子商务上,使用大数据技术分析用户购物喜好或最受青睐的商品。而且,大数据技术在建设节约型社会,提高生产效率等方面起到了积极的推动作用。在海量数据检索应用中,Apache基金会的分布式检索框架SparkSQL提供了同Hive的HiveQL接口,其具有较高的效率及可用性,在大数据领域被广泛的使用。但是,随着数据量的不断增加和大数据技术的不断发展,SparkSQL的原生架构已经无法进行大结果集的检索,且结果返回响应时间较长,这些问题直接影响了SparkSQL的业务应用。具体的,用户向SparkSQL提交检索请求后,被提交的SQL(StructuredQueryLanguage,结构化查询语言)语句会经过多重解析生成执行计划,最终生成Spark中的RDD(ResilientDistributedDatasets,弹性分布式数据集)。RDD会经过DAG(DatabaseAvailabilityGroup,数据库可用组件)的转换并经过物理规划,生成具有执行先后顺序的多组Task(子任务)集合,并分发到Spark的Executor(执行器)上进行分布式的执行。待所有Task执行完成后,所有Task的执行结果将在SparkDriver(驱动器)所在服务器的内存中进行汇总,然后将汇总结果返回给用户。这种方式的问题是显而易见的,在用户提交的用于检索的SQL语句执行起来较为耗时,这是由于分布式执行和结果返回这两个过程是线性依次进行的,会导致结果返回的响应时间很长,且总耗时过长;并且,在进行超大结果集的检索时,这种方式受到SparkDriver单台服务器内存的物理限制而无法进行。
技术实现思路
本专利技术要解决的技术问题是提供一种数据检索方法和装置,用以解决SparkSQL的原生架构无法进行大结果集的检索,且结果返回响应时间较长的问题。为了解决上述技术问题,本专利技术是通过以下技术方案来解决的:本专利技术提供了一种数据检索方法,包括:根据请求数据检索的结构化查询语言SQL语句生成执行计划;判断所述执行计划是否满足流式结果返回条件;如果满足流式结果返回条件,则在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。其中,执行所述执行计划,包括:步骤2,根据所述执行计划,生成多个任务Job;步骤4,并发提交所述多个Job中的部分或全部Job;步骤6,针对提交的每个所述Job,生成多个子任务Task;步骤8,将所述多个Task分发到Spark执行器进行数据检索;步骤10,判断所述多个Job是否都被提交,如果是,则停止提交Job,如果否,则跳转到步骤4。其中,在执行所述执行计划的过程中,逐个获取检索结果,包括:控制每个所述Spark执行器在执行Task之后,缓存检索结果并返回所述检索结果对应的检索结果标识符;其中,检索结果标识符用于确定所述检索结果标识符对应的检索结果缓存的Spark执行器以及缓存位置;根据多个所述Spark执行器返回的检索结果标识符,逐个获取检索结果标识符对应的检索结果。其中,在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,包括:根据多个所述Spark执行器返回的检索结果标识符,并且按照向用户提供检索结果的速度,逐个从对应的Spark执行器获取检索结果。其中,所述流式结果返回条件,包括:所述执行计划的语句类型为预设类型,和/或,数据检索需要扫描的文件数量大于预设阈值。本专利技术还提供了一种数据检索装置,包括:生成模块,用于根据请求数据检索的结构化查询语言SQL语句生成执行计划;判断模块,用于判断所述执行计划是否满足流式结果返回条件;执行模块,用于在所述判断模块判定满足流式结果返回条件的情况下,在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。其中,所述执行模块,包括:生成单元,用于根据所述执行计划,生成多个任务Job;提交单元,用于并发提交所述多个Job中的部分或全部Job;所述生成单元,还用于针对提交的每个所述Job,生成多个子任务Task;执行单元,用于将所述多个Task分发到Spark执行器进行数据检索;判断单元,用于判断所述多个Job是否都被提交,如果是,则停止提交Job,如果否,则调用所述提交单元,继续提交Job。其中,所述执行模块进一步用于:控制每个所述Spark执行器在执行Task之后,缓存检索结果并返回所述检索结果对应的检索结果标识符;其中,检索结果标识符用于确定所述检索结果标识符对应的检索结果缓存的Spark执行器以及缓存位置;根据多个所述Spark执行器返回的检索结果标识符,逐个获取检索结果标识符对应的检索结果。其中,所述执行模块进一步用于:根据多个所述Spark执行器返回的检索结果标识符,并且按照向用户提供检索结果的速度,逐个从对应的Spark执行器获取检索结果。其中,所述流式结果返回条件,包括:所述执行计划的语句类型为预设类型,和/或,数据检索需要扫描的文件数量大于预设阈值。本专利技术有益效果如下:本专利技术提供了一种面向SparkSQL的检索结果流式返回的数据检索方法。本专利技术在数据检索过程中,逐个获取检索结果,并且一边获取检索结果一边提供给用户使用,有效降低了使用SparkSQL进行数据检索时的结果返回响应时间和检索总消耗时间,提升了SparkSQL框架进行数据检索时的效率和可用性,并且通过流式返回方式,解决了SparkSQL在进行大结果集检索时可能出现的内存问题,使SparkSQL框架进行大结果集检索成为可能。附图说明图1是根据本专利技术一实施例的数据检索方法的流程图;图2是根据本专利技术一实施例的数据检索方法的流程示意图;图3是根据本专利技术一实施例的生成Job的步骤流程图;图4是根据本专利技术一实施例的并发提交Job的步骤流程图;图5是根据本专利技术一实施例的流式结果返回的步骤流程图;图6是根据本专利技术一实施例的数据检索装置的结构图。具体实施方式以下结合附图以及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不限定本专利技术。实施例一本实施例提供一种数据检索方法。如图1所示,为根据本专利技术一实施例的数据检索方法的流程图。步骤S110,根据请求数据检索的SQL语句生成执行计划。步骤S120,判断所述执行计划是否满足流式结果返回条件;如果是,则执行步骤S130;如果否,则执行步骤S140。所述流式结果返回条件,包括:所述执行计划的语句类型为预设类型,和/或,数据检索需要扫描的文件数量大于预设阈值。其中,语句类型为对检索结果没有顺序要求。步骤S130,在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。在本实施例中,执行所述执行计划包括以下步骤:步骤2,根据所述执行计划,生成多个任务Job(SparkJob)。步骤4,并发提交所述多个Job中的部分或全部Job。通过预设的线程池本文档来自技高网
...

【技术保护点】
1.一种数据检索方法,其特征在于,包括:根据请求数据检索的结构化查询语言SQL语句生成执行计划;判断所述执行计划是否满足流式结果返回条件;如果满足流式结果返回条件,则在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。

【技术特征摘要】
1.一种数据检索方法,其特征在于,包括:根据请求数据检索的结构化查询语言SQL语句生成执行计划;判断所述执行计划是否满足流式结果返回条件;如果满足流式结果返回条件,则在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,直至所有检索结果获取完毕并提供给用户为止。2.如权利要求1所述的方法,其特征在于,执行所述执行计划,包括:步骤2,根据所述执行计划,生成多个任务Job;步骤4,并发提交所述多个Job中的部分或全部Job;步骤6,针对提交的每个所述Job,生成多个子任务Task;步骤8,将所述多个Task分发到Spark执行器进行数据检索;步骤10,判断所述多个Job是否都被提交,如果是,则停止提交Job,如果否,则跳转到步骤4。3.如权利要求2所述的方法,其特征在于,在执行所述执行计划的过程中,逐个获取检索结果,包括:控制每个所述Spark执行器在执行Task之后,缓存检索结果并返回所述检索结果对应的检索结果标识符;其中,检索结果标识符用于确定所述检索结果标识符对应的检索结果缓存的Spark执行器以及缓存位置;根据多个所述Spark执行器返回的检索结果标识符,逐个获取检索结果标识符对应的检索结果。4.如权利要求3所述的方法,其特征在于,在执行所述执行计划的过程中,逐个获取检索结果并逐个提供给用户,包括:根据多个所述Spark执行器返回的检索结果标识符,并且按照向用户提供检索结果的速度,逐个从对应的Spark执行器获取检索结果。5.如权利要求1-4中任一项所述的方法,其特征在于,所述流式结果返回条件,包括:所述执行计划的语句类型为预设类型,和/或,数据检索需要扫描的文件数量大于预设阈值。6.一种数据检索装置...

【专利技术属性】
技术研发人员:张鸿吕雁飞刘欣然马秉楠惠榛白堃
申请(专利权)人:国家计算机网络与信息安全管理中心
类型:发明
国别省市:北京,11

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

1