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(驱动器)所在服务器的内存中进行汇总,然后将汇总结果返回给用户。这种方式的问题是显而易见 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。