数据处理方法、装置及可读存储介质制造方法及图纸

技术编号:24168685 阅读:22 留言:0更新日期:2020-05-16 02:15
本申请提供一种数据处理方法、装置及可读存储介质,涉及计算机技术领域,该方法包括:获取数据处理语言的目标语句;获取所述目标语句中的多个目标子句,所述多个目标子句包括适于在所述Spark上执行的多个Spark子句以及适于在ElasticSearch上执行的多个ElasticSearch子句;根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,获得优化后的目标语句。该方案可按照各个子句之间的依赖关系对数据处理语言中的语句进行优化,从而可提高其数据处理语言执行的性能,进而提高数据查询效率。

Data processing method, device and readable storage medium

【技术实现步骤摘要】
数据处理方法、装置及可读存储介质
本申请涉及计算机
,具体而言,涉及一种数据处理方法、装置及可读存储介质。
技术介绍
随着信息化的不断深入发展,数据生成速度正在提高,需要处理的数据量急速膨胀,对大规模的数据进行存储、查询以及分析已经成为一个亟待解决的问题。结构化查询语言(StructuredQueryLanguage,SQL),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL通过不同的语句来实现数据查询和程序的设计,这些语句可通过对应的数据分析引擎执行,数据分析引擎包括有ElasticSearch和Spark,ElasticSearch是一个分布式、高扩展、高实时的搜索与数据分析引擎,它能很方便的存储结构化、非结构化的海量数据,并向终端客户提供搜索、分析和探索的能力,因此,可用于搜索各种文档,同时提供可扩展且接近实时的搜索,其优点就是能及时快速获取数据,但是无法实现复杂的数据分析和数据探索。而Spark是专门为大规模数据处理而设计的快速通用计算引擎,它是一种类HadoopMapReduce的通用并行计算框架,它具有HadoopMapReduce的所有优点,同时基于内存进行计算,其性能远优越于HadoopMapReduce,因此Spark能更能好地适用于复杂的数据挖掘和机器学习。但是由于ElasticSearch的性能远高于Spark,为了兼容两个引擎,其编程语言中针对不同的任务采用不同的语句进行编程,而语句的不同写法,可能导致性能有较大的差异,使得其数据查询效率较低。
技术实现思路
本申请实施例的目的在于提供一种数据处理方法、装置及可读存储介质,用以改善现有技术中SQL语言执行的性能较低,导致数据查询效率较低的问题。第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:获取数据处理语言的目标语句,其中,所述数据处理语言为类SQL语言,所述数据处理语言的语句能够按子句构成的管道被切分为多个数据处理任务执行,所述多个数据处理任务包括在Spark和/或ElasticSearch上执行的任务;获取所述目标语句中的多个目标子句,所述多个目标子句包括适于在所述Spark上执行的多个Spark子句以及适于在ElasticSearch上执行的多个ElasticSearch子句;根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,获得优化后的目标语句。在上述实现过程中,通过将数据处理语言中的语句划分为多个Spark子句以及多个ElasticSearch子句,然后可按照各个子句之间的依赖关系对数据处理语言中的语句进行优化,从而可提高其数据处理语言执行的性能,进而提高数据查询效率。可选地,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,包括:获取所述多个Spark子句中的Transform子句;确定所述Transform子句的前向依赖的子句是否为所述多个ElasticSearch子句中的ElasticSearch子句;若是,则将所述Transform子句转换为对应的ElasticSearch子句。在上述实现过程中,通过将Transform子句转换为对应的ElasticSearch子句,可使得将由Spark执行的语句转换到由ElasticSearch执行,由此可提升数据处理语言的执行性能。可选地,所述将所述Transform子句转换为对应的ElasticSearch子句之后,还包括:获取所述多个Spark子句中未转换为ElasticSearch子句的多个其他Transform子句;确定所述多个其他Transform子句之间是否具有单向传递依赖关系;若是,则将具有单向传递依赖关系的其他Transform子句合并为一个Transform子句。在上述实现过程中,将具有单向传递依赖关系的Transform子句合并为一个Transform子句,由此可减少Spark的任务执行数量,以提升数据处理语言的执行性能。可选地,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,包括:确定所述多个目标子句中最后执行的目标子句;确定与所述目标子句不具有依赖关系的冗余子句;将所述冗余子句从所述的数据处理语言的目标语句中删除。在上述实现过程中,通过删除数据处理语言中的冗余自居,从而可减少语句的执行数量,进而可提升数据查询效率。可选地,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,包括:获取所述多个Spark子句中的Join子句;确定所述Join子句的后置子句是否为Transform子句;若是,则将所述Transform子句合并到所述Join子句中。在上述实现过程中,通过将Transform子句合并到Join子句中,可减少Spark的任务执行数量,并且减少参与关联查询的数据量,可提升数据查询效率。可选地,所述将所述Transform子句合并到所述Join子句中之后,还包括:确定所述Join子句中是否存在只涉及单一数据集的目标条件且所述单一数据集不依赖于除所述Join子句之外的其他子句;若是,则生成加入所述目标条件的新的Join子句,并将原来的Join子句替换为新的Join子句。在上述实现过程中,通过生成新的Join子句,可减少参与关联查询的数据量,进而提升数据查询效率。可选地,所述将所述Transform子句合并到所述Join子句中之后,还包括:确定所述Join子句中涉及的第一数据集和第二数据集的大小是否超过预设阈值;若否,则利用所述第一数据集对所述第二数据集进行IN子查询形成前置执行语句,并将所述前置执行语句插入到所述Join子句之前,所述前置执行语句执行后获得第三数据集,所述第三数据集的数据量小于所述第二数据集的数据量;将所述Join子句中的第二数据集替换为所述第三数据集。在上述实现过程中,通过进行数据转换,可使得参与处理的数据量减少,进而减少参与Join查询的数据量,进一步提升数据处理语言的执行性能。可选地,所述获得优化后的所述目标语句之后,还包括:执行所述优化后的目标语句。第二方面,本申请实施例提供了一种数据处理装置,所述装置包括:语句获取模块,用于获取数据处理语言的目标语句,其中,所述数据处理语言为类SQL语言,所述数据处理语言的语句能够按子句构成的管道被切分为多个数据处理任务执行,所述多个数据处理任务包括在Spark和/或ElasticSearch上执行的任务;子句获取模块,用于获取所述目标语句中的多个目标子句,所述本文档来自技高网
...

【技术保护点】
1.一种数据处理方法,其特征在于,所述方法包括:/n获取数据处理语言的目标语句,其中,所述数据处理语言为类SQL语言,所述数据处理语言的语句能够按子句构成的管道被切分为多个数据处理任务执行,所述多个数据处理任务包括在Spark和/或ElasticSearch上执行的任务;/n获取所述目标语句中的多个目标子句,所述多个目标子句包括适于在所述Spark上执行的多个Spark子句以及适于在ElasticSearch上执行的多个ElasticSearch子句;/n根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,获得优化后的目标语句。/n

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:
获取数据处理语言的目标语句,其中,所述数据处理语言为类SQL语言,所述数据处理语言的语句能够按子句构成的管道被切分为多个数据处理任务执行,所述多个数据处理任务包括在Spark和/或ElasticSearch上执行的任务;
获取所述目标语句中的多个目标子句,所述多个目标子句包括适于在所述Spark上执行的多个Spark子句以及适于在ElasticSearch上执行的多个ElasticSearch子句;
根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,获得优化后的目标语句。


2.根据权利要求1所述的方法,其特征在于,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,包括:
获取所述多个Spark子句中的Transform子句;
确定所述Transform子句的前向依赖的子句是否为所述多个ElasticSearch子句中的ElasticSearch子句;
若是,则将所述Transform子句转换为对应的ElasticSearch子句。


3.根据权利要求2所述的方法,其特征在于,所述将所述Transform子句转换为对应的ElasticSearch子句之后,还包括:
获取所述多个Spark子句中未转换为ElasticSearch子句的多个其他Transform子句;
确定所述多个其他Transform子句之间是否具有单向传递依赖关系;
若是,则将具有单向传递依赖关系的其他Transform子句合并为一个Transform子句。


4.根据权利要求1所述的方法,其特征在于,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优化,包括:
确定所述多个目标子句中最后执行的目标子句;
确定与所述目标子句不具有依赖关系的冗余子句;
将所述冗余子句从所述的数据处理语言的目标语句中删除。


5.根据权利要求1所述的方法,其特征在于,所述根据所述多个Spark子句以及所述多个ElasticSearch子句之间的依赖关系对所述多个目标子句进行优...

【专利技术属性】
技术研发人员:李文广谢莹莹郭庆于宏亮
申请(专利权)人:中科曙光国际信息产业有限公司
类型:发明
国别省市:山东;37

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

1